maxo127
Янв. 1, 2009 00:16:36
Есть текстовый файл с однотипными строками:
A1,A2,A3,A4
B1,B2,B3,B4
C1,C2,C3,C4
и т. д.
Строк много - десятки тысяч.
Нужна программа, которая из этого текста сделал бы следующий:
“Some text ('A1','','A2','','A3','','A4')”;
“Some text ('B1','','B2','','B3','','B4')”;
“Some text ('C1','','C2','','C3','','C4')”;
и т. д.
Нужно срочно, потому прошу о помощи тае не вовремя.
Кстати, Всем С Новым Годом!
ZZZ
Янв. 1, 2009 01:13:37
Я буду первым, кто ответит здесь на вопрос!.. Хотя все нормальные люди пьют…
out_file = open('out.txt', 'wb')
for line in (line.strip() for line in open('in.txt', 'rb')):
out_file.write('"Some text(\'%s\')"\n') % "','','".join(line.split(','))
out_file.close()
Только не спрашивай меня, как оно работает… И это, я не проверял, но вроде правильно.
P.S. Пить надо меньше, а спать больше! Всех с наступившем на нас годом!
maxo127
Янв. 1, 2009 22:57:01
ZZZ
Я буду первым, кто ответит здесь на вопрос!..
Не знаю насколько хотел зла, но совершил точно благо :). С работой разберусь надеюсь.
Спосибы и гигабайты счастья в новом году! Отдельно спасибо за комплимент (все нормальные люди пьют…) :)
maxo127
Янв. 2, 2009 00:54:49
Вот что питон пишет:
Traceback (most recent call last):
File “E:/Program Files/python/balance.py”, line 1, in <module>
out_file = open('E:\Program Files\python\mmm\base_upload.txt', ‘wb’)
IOError: No such file or directory: ‘E:\\Program Files\\python\\mmm\x08ase_upload.txt’
т. е. ищет файл base_upload.txt, а не находит x08ase_upload.txt
почему он превращает “b” в “x08”?
и двойные слеши - так и должно?
Пробовал с заранее созданным файлом base_upload.txt, и без него.
Если называю по -другому, напр ase_upload.txt, название не меняется, но сообщение такое-же.
Входной test.txt тоже существует точно.
При запуске создается пустой base_upload.txt. Также в том случае, если там уже был файл с этим названием (и каким-то содержанием).
сам текст программы:
out_file = open('E:\Program Files\python\mmm\base_upload.txt', ‘wb’)
for line in (line.strip() for line in open('E:\Program Files\python\mmm\test.txt', ‘rb’)):
out_file.write('“Some text(\'%s\')”\n') % “','','”.join(line.split(','))
out_file.close()
ZZZ
Янв. 2, 2009 03:10:50
maxo127
out_file = open('E:\Program Files\python\mmm\base_upload.txt', ‘wb’)
for line in (line.strip() for line in open('E:\Program Files\python\mmm\test.txt', ‘rb’)):
out_file.write('“Some text(\'%s\')”\n') % “','','”.join(line.split(','))
out_file.close()
Ну правильно! Обратный слеш (\), это эскейп символ. Попробуй удвоить их.
out_file = open('E:\\Program Files\\python\\mmm\\base_upload.txt', 'wb')
for line in (line.strip() for line in open('E:\\Program Files\\python\\mmm\\test.txt', 'rb')):
out_file.write('"Some text(\'%s\')"\n') % "','','".join(line.split(','))
out_file.close()
ZZZ
Янв. 2, 2009 03:13:40
Или поставить ‘r’ перед строкой, чтобы сделать её “сырой”:
r'E:\Program Files\python\mmm\base_upload.txt'
ZZZ
Янв. 2, 2009 03:20:33
А вообще, это только в Новый Год я такой добрый… И то только я… Очень хотелось бы, чтобы вы почитали какой-нить учебник по питону, ибо это очень этементарные вопросы.
maxo127
Янв. 2, 2009 23:11:56
ZZZ
Очень хотелось бы, чтобы вы почитали какой-нить учебник по питону, ибо это очень этементарные вопросы.
И мне хотелось бы, вот на интуит.ру прекрасный материал лежит, но как Вы думаете - когда человек в разгар нового года этими занимается, потому что программист надяпал что-то на С++ и пропал, а прога не работает, вернее работает но бесконечно и без толку, а базу надо обновить, а ее не то чтоб обновить пока к разуму привести надо, антивира не купили и чтоб куда-то зайти у вируса разрешения просить надо, и сервер чо-то поскрипывает, и хостинг барахлит, аууууууууууууууууууууууууууууууууууууууууу
Где тут учебники читать :(
Хорошо что все еще все пьяны :)
maxo127
Янв. 3, 2009 00:12:11
Нет, не получается
Немножко повозился, на экран вывщдит правильно:
out_file = open('E:\\Program Files\\python\\mmm\\base_upload.txt', ‘wb’)
for line in (line.strip() for line in open('E:\\Program Files\\python\\mmm\\test.txt', ‘rb’)):
print ('“INSERT (\'%s\')”;\n') % “','”.join(line.split(','))
результат:
“INSERT ('C1','C2','C3','C4')”;
А если вместо print вставить out_file.write, тогда ошибка:
Traceback (most recent call last):
File “E:/Program Files/python/mmm/make_base.py”, line 3, in <module>
out_file.write('“INSERT INTO balance(id,pir_n,saxeli,gvari,misamarti,davalianeba,tarigi) VALUES (\'%s\')”;\n') % “','”.join(line.split(','))
TypeError: unsupported operand type(s) for %: ‘NoneType’ and ‘str’
maxo127
Янв. 3, 2009 00:30:46
И как назло во всей сети нет обяснение ошибли %; есть for +, =, /, * и хз что, а про % - ни заикания :(