Я пытаюсь изменить несколько шестнадцатеричных значений в текстовом файле. Я создал CSV, в котором исходные значения в одном столбце и новые значения в другом.
Моя цель - написать простой Python скрипт для поиска старых значений в текстовом файле на основе первого столбца и замените их новыми значениями во втором.
Я пытаюсь использовать словарь для облегчения этого replace()
, который я создал, просматривая CSV в цикле. Создать его было довольно просто, но использовать его для выполнения replace()
не получилось. Когда я распечатываю значения после запуска сценария, я все еще вижу исходные.
Я пробовал читать текстовый файл, используя read()
, и выполнять изменения для всего файла, как указано выше.
import csv
filename = "origin.txt"
csv_file = 'replacements.csv'
conversion_dict = {}
# Create conversion dictionary
with open(csv_file, "r") as replace:
reader = csv.reader(replace, delimiter=',')
for rows in reader:
conversion_dict.update({rows[0]:rows[1]})
#Replace values on text files based on conversion dict
with open(filename, "r") as fileobject:
txt = str(fileobject.read())
for keys, values, in conversion_dict.items():
new_text = txt.replace(keys, values)
Я также попытался добавить обновленный текст в список:
#Replace values on text files based on conversion dict
with open(filename, "r") as fileobject:
txt = str(fileobject.read())
for keys, values, in conversion_dict.items():
new_text.append(txt.replace(keys, values))
Затем я попытался использовать readlines()
, чтобы заменить старые значения на новые по одной строке time:
# Replace values on text files based on conversion dict
with open(filename, "r") as reader:
reader.readlines()
type(reader)
for line in reader:
print(line)
for keys, values, in conversion_dict.items():
new_text.append(txt.replace(keys, values))
Во время устранения неполадок я провел тест, чтобы проверить, есть ли совпадения между ключами в моем dict и текстом в файле:
for keys, values, in conversion_dict.items():
if keys in txt:
print("match")
else:
print("no match")
Мой вывод вернул match
в каждой строке, кроме первой. Думаю, с помощью некоторой обрезки или чего-то еще я мог бы это исправить. Однако это доказывает, что есть совпадения, поэтому с моим кодом должна быть какая-то другая проблема.
Любая помощь приветствуется.