如何在Python中查找文件中的字符串并替换为另一个字符串?

4

我有一个CSV文件,从中我创建一个列表:

with open('old_id_new_id.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile, delimiter=',')
    result = [[row['oldid'],row['newid']] for row in reader]
    print(result)

这个结果列表包含多个类似于这样的元素:

result = [['e000001_kuttenberger_religionsfrieden_tschech', 'pa000001-0020'], 
          ['e000001_kuttenberger_religionsfrieden_dt', 'pa000001-0021']]

我有一个如下结构的XML文件:

<struct label="Kuttenberger Religionsfrieden (1485)" order="2">
    <view file="e000001_kuttenberger_religionsfrieden_einleitung" label="Einleitung"/>
    <view file="e000001_kuttenberger_religionsfrieden_tschech" label="Quellentext"/>
    <view file="e000001_kuttenberger_religionsfrieden_dt" label="Deutsche Übersetzung"/>
</struct>

我该如何打开这个文件并将字符串 result[0][0] 替换为 result[0][1]:

简单地说,下面的方法不起作用:

    with open('struct.xml', 'rb') as file:
        for line in file:
            if str(result[0][0]) in line:
                line.replace(str(result[0][0]), str(result[0][1]))

有什么提示吗?


这个回答解决了你的问题吗?替换文件内容中的字符串 - Ruli
1个回答

2

你可以建立一个搜索词及其替换的字典。同时,建立一个正则表达式替换所有需要被替换的搜索词。然后,对于每一行应用re.sub和这个替换表达式,在回调中查询字典以找到要替换的内容。

result = (['e000001_kuttenberger_religionsfrieden_tschech', 'pa000001-0020'], ['e000001_kuttenberger_religionsfrieden_dt', 'pa000001-0021'])
terms = dict(result)
regex = r'\b(?:' + '|'.join([x[0] for x in result]) + r')\b'

with open('struct.xml', 'rb') as file:
    for line in file:
        line = re.sub(regex, lambda m: terms[m.group()], line)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接