Форум сайта python.su
0
Здравствуйте.
Потихоньку изучаю python, начал сразу с 3.2.2 Понемногу автоматизирую некоторые задачи на которые раньше уходило много времени.
И вот столкнулся с небольшой проблемой.
Есть два файла: 1) big_list.txt в котором около 400к многословных строк текста. 2) words.txt в котором около 350 однословных строк.
Надо каждую строку из файла words.txt проверить на вхождение в каждую строку из файла big_list.txt. И если вхождение есть то строку из файла big_list.txt записать в файл с именем строки из файла words.txt
по коду думаю будет понятней чем я написал :)
for string in open('big_list.txt'):
for word in open('words.txtt'):
cleanword = word.rstrip('\n')
file = open(cleanword + '.txt', 'a')
if cleanword in string:
file.write(string)
file.close()Офлайн
857
у тебя там ошибка - файл результата многократно открывается
ты его открыл, а писать в него ничего не надо, надо его закрыть, а ты его не закрыл
#!/usr/bin/env python3
if __name__ == '__main__':
with open('big_list.txt', encoding='utf-8') as fbl:
bls = set(fbl)
with open('words.txt', encoding='utf-8') as fw:
ws = set(w.strip() for w in fw)
for word in ws:
tup = tuple(s for s in bls if word in s)
if tup:
with open(word + '.txt', "w", encoding='utf-8') as fres:
print(*tup, sep='', end='', file=fres)
print("ok")
Отредактировано (Дек. 28, 2011 00:13:23)
Офлайн
0
py.user.nextдавало вот такую ошибку
у тебя там ошибка - файл результата многократно открывается
ты его открыл, а писать в него ничего не надо, надо его закрыть, а ты его не закрылпроверь этот по времени#!/usr/bin/env python3
if __name__ == '__main__':
with open('big_list.txt', encoding='utf-8') as fbl:
bls = set(fbl)
with open('words.txt', encoding='utf-8') as fw:
ws = set(w.strip() for w in fw)
for word in ws:
tup = tuple(s for s in bls if word in s)
if tup:
with open(word + '.txt', "w", encoding='utf-8') as fres:
print(*tup, sep='', end='', file=fres)
print("ok")
Traceback (most recent call last):убрал везде encoding='utf-8' и заработало :)
File “<pyshell#1>”, line 3, in <module>
bls = set(fbl)
File “F:\Python32\lib\codecs.py”, line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ‘utf8’ codec can't decode byte 0xae in position 2681: invalid start byte
Офлайн
857
quickyнужно выставить правильную кодировку, это обязательно
убрал везде encoding='utf-8'
Офлайн