У меня есть большой текстовый файл, в котором есть слова, которые я хочу заменить. Я помещаю эти слова в csv-файл, потому что я постоянно добавляю и меняю слова и не хочу помещать слова в скрипт python. На каждой строке есть слово, которое я хочу заменить, за которым следует слово, которое я хочу заменить. Как это:python: заменить слова в файле словами из другого файла
A_old,A_new
another word,another new word
something old,something new
hello,bye
Я знаю, как заменить отдельные слова в файлах с питоном со строкой функции замены, но я не знаю, как это сделать, когда слова перечислены в другом файле. Я старался изо всех сил, но я не могу окунуться в то, как работать со словарями/списками/кортежами. Я довольно новичок в python, и до сих пор мне удалось найти примеры из Интернета, но это выходит за рамки моих возможностей. У меня есть всевозможные ошибки, такие как «unhashable type: list» и «ожидаемый объект буфера символов». Последнее, что я пробовал, было самым успешным в том, что у меня не было никаких ошибок, но потом ничего не произошло. Это код. Я уверен, что это уродливо, но я надеюсь, что это не совсем безнадежно.
reader = csv.reader(open('words.csv', 'r'))
d = {}
for row in reader:
key, value = row
d[key] = value
newwords = str(d.keys())
oldwords = str(d.values())
with open('new.txt', 'wt') as outfile:
with open('old.txt', 'rt') as infile:
for line in infile:
outfile.write(line.replace(oldwords,newwords))
Причина Я делаю это потому, что я работаю на поваренной с индексом ингредиента на основе, и я не хочу, индекс как с «кнута» и «морковь», вместо этого я хочу замените «морковь» на «морковь» и т. д. для всех остальных ингредиентов. Спасибо, кучка для подталкивания в правильном направлении!
С одной стороны, вам нужно использовать 'd [key] = [значение]', чтобы создать список списков, а не 'd [key] = value'. –
Но непонятно, почему у вас есть список списков вообще; здесь не правильная модель данных. Простой текст струн будет делать. –
Регулярный 'replace' может не подойти для этой задачи. Предположим, вы все разобрали материал dict, и вы, наконец, замените все экземпляры «моркови» в вашем файле «морковкой». Но это также заменит все существующие случаи «моркови» на «морковь». 'replace' не только ищет полные слова для замены; он с радостью заменит части слов. – Kevin