1

如何在正则表达式中使用我想用另一组单词替换的一组单词?

我尽力而为,这就是我最终得到的结果(当然它没有达到我想要的效果):

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
4

2 回答 2

2

你的意思是完成这个:

inputdata=open(file).read()
for initial,final in zip(set1,set2):
    inputdata=inputdata.replace(initial,final)
print str #or write to file
于 2013-07-15T18:39:34.433 回答
1

here is a good example:

>>> 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
>>> 

I am not using count or count2 though, I assumed you want to replace all occurences. Since I am using text in my example and not a file here is what you need:

with open(outputfile, 'w') as output:
    with open(file, 'r+') as book:
        for line in book:
            output.write(pattern.sub(translate, line))
于 2013-07-15T18:55:08.803 回答