Форум сайта python.su
Есть текстовый файл с однотипными строками:
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')”;
и т. д.
Нужно срочно, потому прошу о помощи тае не вовремя.
Кстати, Всем С Новым Годом!
Отредактировано (Янв. 1, 2009 00:21:14)
Офлайн
Я буду первым, кто ответит здесь на вопрос!.. Хотя все нормальные люди пьют…
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()
Офлайн
ZZZНе знаю насколько хотел зла, но совершил точно благо :). С работой разберусь надеюсь.
Я буду первым, кто ответит здесь на вопрос!..
Офлайн
Вот что питон пишет:
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()
Отредактировано (Янв. 2, 2009 01:13:37)
Офлайн
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()
Офлайн
Или поставить ‘r’ перед строкой, чтобы сделать её “сырой”:
r'E:\Program Files\python\mmm\base_upload.txt'
Офлайн
А вообще, это только в Новый Год я такой добрый… И то только я… Очень хотелось бы, чтобы вы почитали какой-нить учебник по питону, ибо это очень этементарные вопросы.
Офлайн
ZZZИ мне хотелось бы, вот на интуит.ру прекрасный материал лежит, но как Вы думаете - когда человек в разгар нового года этими занимается, потому что программист надяпал что-то на С++ и пропал, а прога не работает, вернее работает но бесконечно и без толку, а базу надо обновить, а ее не то чтоб обновить пока к разуму привести надо, антивира не купили и чтоб куда-то зайти у вируса разрешения просить надо, и сервер чо-то поскрипывает, и хостинг барахлит, аууууууууууууууууууууууууууууууууууууууууу
Очень хотелось бы, чтобы вы почитали какой-нить учебник по питону, ибо это очень этементарные вопросы.
Офлайн
Нет, не получается
Немножко повозился, на экран вывщдит правильно:
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’
Офлайн
И как назло во всей сети нет обяснение ошибли %; есть for +, =, /, * и хз что, а про % - ни заикания :(
Офлайн