我有两个文本文件,并用第二个文件中的实际匹配项替换XXX占位符-按照第二个文件中给出的顺序。
第一个文本是一个文件,在一行中有多行和多个占位符。
欧盟由以下国家组成:XXX、XXX、XXX、XXX、XXX。。。。欧盟内最大的三个国家是XXX,XXX,XXX。
第二个文件是每行一个匹配的列表:
波兰荷兰丹麦西班牙意大利德国法国
我想把它替换如下:
欧洲联盟由下列国家组成:波兰、荷兰、丹麦、西班牙、意大利。。。。欧盟内最大的三个国家是德国、法国、XXX。
到目前为止,我已经得到了这个编码:
import re
file1 = open("text.txt")
file2 = open("countries.txt")
output = open("output.txt", "w")
countrylist = []
i=0
for line in file2:
countrylist[i:] = verweise
i=i+1
j=0
for line in file1:
if "XXX" in line:
line = re.sub("XXX", countrylist[j], line)
j=j+1
output.write(line)
output.flush()
output.close
我的问题是正则html" target="_blank">表达式替换不仅对第一次出现/匹配有效,而且对整个第一行都有效。现在我的输出是这样的:
欧盟由以下国家组成波兰、波兰、波兰、波兰、...欧盟最大的三个国家是荷兰、荷兰、荷兰。
如何将XXX的每一次出现与我的国家/地区列表中的一行匹配?
感谢任何帮助!
您可以为sub
找到的每个匹配调用一个函数:
countries = [ 'Poland', 'Netherlands', 'Denmark', 'Spain', 'Italy' ]
def f(match, countriesIter=iter(countries)):
return countriesIter.next()
line = "The European Union consists of the following states XXX, XXX, XXX, XXX, XXX"
print re.compile('XXX').sub(f, line)
这将打印:
The European Union consists of the following states Poland, Netherlands, Denmark, Spain, Italy
根据你的知识,最好使用一个全局计数器来遍历国家名称列表:
count = 0
def f(match):
global count
result = countries[count]
count += 1
return result
这不太优雅,但如果你对Python内部和生成器等没有更深的经验,那就更好理解了。
在re模块. sub(替换,字符串[,计数=0])
计数=1应该只替换第一次出现。
问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要
我有一个作为字符串传入的句子,我正在对单词“and”进行替换,我想用“”替换它。它并没有用空白代替“和”。下面是我的逻辑示例。当我调试这个的时候,逻辑就落在句子里了。代替 这里有我遗漏的东西吗。
问题内容: 我需要替换字符串中的多个字符。结果不能包含任何“&”或任何逗号。 我目前有: 但是,如何输入多个值? 非常感谢! 问题答案: 您只需要菊花链式连接它们:
问题内容: 说我有一个看起来像这样的字符串: 您会注意到字符串中有很多与符号的位置,后跟一个字符(例如“&y”和“&c”)。我需要用字典中的适当值替换这些字符,如下所示: 最快的方法是什么?我可以手动找到所有“&”号,然后遍历字典以更改它们,但这似乎很慢。进行一堆正则表达式替换似乎也很慢(我的实际代码中将有大约30-40对字典)。 任何建议表示赞赏,谢谢。 编辑: 正如在该问题的注释中所指出的那样
问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是:
问题内容: 这个简单的代码仅尝试用冒号替换分号(在i指定的位置)不起作用: 它给出了错误 如何解决此问题,以冒号代替分号?使用replace不起作用,因为该函数不占用索引-可能有一些我不想替换的分号。 例 在字符串中,我可能有许多分号,例如 我知道我想替换哪些(我在字符串中有索引)。使用替换无法正常工作,因为我无法对其使用索引。 问题答案: python中的字符串是不可变的,因此你不能将它们视为列