簡體   English   中英

用兩組詞來查找和替換RE

[英]Using Two Sets of Words for a Find and Replace RE

我如何使用一組我想要用正則表達式中的另一組單詞替換的單詞?

我給了它最好的鏡頭,這是我最終得到的(當然它不是我想要的):

count = 0
count2 = 0
set1 = ['word1','word2','word3']
set2 = ['new_word1','new_word2','new_word3']
with open(file, 'r+') as book:
    for line in book:
        if count<2:
            set1var = set1[count]
            set2var = set2[count2]
            reg1 = re.sub(r''+set1var,r''+set2var,line)
                    f.write(reg1)
                    if line != reg1:
                            count+=1
                            count2+=1

你的意思是完成這件事:

inputdata=open(file).read()
for initial,final in zip(set1,set2):
    inputdata=inputdata.replace(initial,final)
print str #or write to file

這是一個很好的例子:

>>> import re
>>> set1 = ['word1','word2','word3']
>>> set2 = ['new_word1','new_word2','new_word3']
>>> translation = dict(zip(set1, set2))
>>> 
>>> 
>>> text = '''
... here I am word1 talking about word2.
... ipsum ipsumipsum ipsum ipsum ipsum ipsum ipsum
... ipsum ipsumipsum word1 ipsum ipsum ipsum ipsum
... ipsum ipsumipsum ipsum ipsum word2 ipsum ipsum
... ipsum ipsumipsum ipsum ipsum ipsum ipsum ipsum
... '''
>>> 
>>> # compile a pattern matching any of the words
... pattern = re.compile('(%s)' % '|'.join(set1))
>>> 
>>> def translate(match):
...     return translation[match.group(0)]
... 
>>> # replace with: for line in book:
>>> for line in text.splitlines():
...     print pattern.sub(translate, line)
... 

here I am new_word1 talking about new_word2.
ipsum ipsumipsum ipsum ipsum ipsum ipsum ipsum
ipsum ipsumipsum new_word1 ipsum ipsum ipsum ipsum
ipsum ipsumipsum ipsum ipsum new_word2 ipsum ipsum
ipsum ipsumipsum ipsum ipsum ipsum ipsum ipsum
>>> 

我不是在使用countcount2 ,我假設你想要替換所有出現的東西。 由於我在我的示例中使用文本而不是文件,因此您需要:

with open(outputfile, 'w') as output:
    with open(file, 'r+') as book:
        for line in book:
            output.write(pattern.sub(translate, line))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM