【发布时间】:2011-01-12 06:52:07
【问题描述】:
我对 Python 还很陌生,正在编写一系列脚本来在一些专有标记格式之间进行转换。我在文件上逐行迭代,然后基本上做了大量(100-200)的替换,基本上分为 4 类:
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
这里有什么关于效率的想法吗?
谢谢!
【问题讨论】: