Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 26, 2010 11:27:10

grok
От:
Зарегистрирован: 2010-09-09
Сообщения: 74
Репутация: +  0  -
Профиль   Отправить e-mail  

Выделение подстроки

Ed
Как вы смотрите на эти аналоги?
roll = []
for key in range(0, len(txt), 3):
roll.append(dic.get(txt[key:key+3]))
print ''.join(roll)
print ''.join([dic[txt[key:key+3]] for key in range(0, len(txt), 3)])
Я сам начинающий питонер, изучаю его для себя, и написание сложных конструкций и их понимание даются не с лихвой. Думаю и тем, кому нужна помощь в таких простеньких задачах, будет понятен короткий-построчный код (легче для понимания). =)



Офлайн

#2 Сен. 26, 2010 11:59:55

AmF
От:
Зарегистрирован: 2010-09-16
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Выделение подстроки

Скажите, пжлст, а почему вот в этой строке:

str_ = seq.join(roll)
мне выдается ошибка TypeError: expected string, NonType found? - т.е., насколько я понял, переменной str_ пытаются присвоить нечто, что не имеет типа, хотя предполагается строка?

Спасибо



Офлайн

#3 Сен. 26, 2010 12:52:49

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Выделение подстроки

Ed
Как вы смотрите на эти аналоги?
Код:

print ''.join([dic[txt] for key in range(0, len(txt), 3)])
Только квадратные скобки вокруг аргумента функции join не только не нужны, но даже и нежелательны.



Отредактировано (Сен. 26, 2010 12:59:27)

Офлайн

#4 Сен. 26, 2010 16:33:24

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Выделение подстроки

grok
Я сам начинающий питонер, изучаю его для себя, и написание сложных конструкций и их понимание даются не с лихвой. Думаю и тем, кому нужна помощь в таких простеньких задачах, будет понятен короткий-построчный код (легче для понимания). =)
Дык я привел и короткий построчный. Ну разве что вынести txt в отдельную переменную осталось.
На мой взгляд все эти многочисленные переменные n,str_, lne и прочие не упрощают код, а наоборот усложняют его, делают менее читабельным.



Офлайн

#5 Сен. 26, 2010 20:16:42

AmF
От:
Зарегистрирован: 2010-09-16
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Выделение подстроки

А нет, это моя ошибка - не доглядел … - всё классно работает.

А вот если, например, во входном файле записаны несколько последовательностей и каждую последовательность надо преобразовать и записать отдельно в выходной файл - каждую - с новой строки?
Т.е.:
<название посл-сти 1>
посл-сть 1
<название посл-сти 2>
посл-сть 2
Т.е. необходимо сначала вывести название, начинающееся с <, а потом - преобразованную посл-сть, далее - название след. посл-сти - и ее саму, преобразованную. Я так понимаю, надо делать что-то вроде такого цикла: если строка начинается с <. то вывести название, если не с < - выполнять действия по преобразованию и т.д. … Или я неправильно понимаю?

Спасибо



Офлайн

#6 Сен. 27, 2010 20:04:19

AmF
От:
Зарегистрирован: 2010-09-16
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Выделение подстроки

Скажите, пжлст, почему в такой конструкции:

for line in f:
if line[0] == '>':
f1.write(line)
text = f.read() ###
lne = text.replace('\n', '')
n = len(lne)
key = 0
roll = []
while key < n:
nlist=lne[key:key+3]
key=key+3
roll.append(dic.get(nlist))
seq = ''
#str_ = seq.join(roll)
#f1.write(str_)
выдается ошибка в ###строке? А если ставишь просто
f.read()
то след. строку не читает - там text неизвестен.

Спасибо



Офлайн

#7 Сен. 27, 2010 21:14:43

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Выделение подстроки

Зачем вам читать файл по несколько раз? Это неправильно.



Офлайн

#8 Сен. 27, 2010 22:00:35

AmF
От:
Зарегистрирован: 2010-09-16
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Выделение подстроки

Ну … мне надо знать содержимое след. строк (после line)… - их же надо прочитать …



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version