我对Python相当陌生,正在编写一系列脚本来在一些专有标记格式之间进行转换。我遍历逐行过的文件,然后基本上是做换人的大量(100-200),基本上可分为4类:在Python中进行大量搜索/替换的有效方法?
line = line.replace("-","<EMDASH>") # Replace single character with tag
line = line.replace("<\\@>","@") # tag with single character
line = line.replace("<\\n>","") # remove tag
line = line.replace("\xe1","•") # replace non-ascii character with entity
的str.replace()函数似乎是相当有效的(当我检查分析输出时,数字相当低),但有没有更好的方法来做到这一点?我已经看到了一个函数作为参数的re.sub()方法,但我不确定这是否会更好?我想这取决于Python在内部做什么样的优化。以为我会在创建一个可能不太有用的大字典之前征求一些建议!
另外我做了一些标签解析(看起来有点像HTML,但不是HTML)。我识别标签是这样的:
m = re.findall('(<[^>]+>)',line)
,然后做〜100搜索/替换匹配的标签内(主要是去除匹配),以及,例如:
m = re.findall('(<[^>]+>)',line)
for tag in m:
tag_new = re.sub("\*t\([^\)]*\)","",tag)
tag_new = re.sub("\*p\([^\)]*\)","",tag_new)
# do many more searches...
if tag != tag_new:
line = line.replace(tag,tag_new,1) # potentially problematic
这里的任何效率的想法?
谢谢!