【发布时间】:2019-07-14 01:35:27
【问题描述】:
我正在尝试获取一个巨大的 html 文件并将其拆分为多个部分。该文件由 Jenkins 生成,如下所示:
[XXX] text1
[XXX] text2
[YYY] text4
[XXX] text3
[YYY] text5
[ZZZ] text6
...
我尝试执行以下操作:
my_dict = {}
text, header = re.split('\n\[[A-Za-z]+\]'), re.match('\n\[[A-Za-z]+\]')
for idx, (header, text) in enumerate(zip(header, text)):
try:
my_dict[header] += text
except KeyError:
my_dict[header] = text
print idx
但这需要的时间太长(idx 约为 200K)。我能以某种方式更快地做到这一点吗?
【问题讨论】:
-
预期格式是什么?
-
有多少不同的标题?如果有很多,你会经常点击
except,并且捕获异常很慢。 -
我希望用 {'XXX' : text1 text2 text3, 'YYY' text4 text5} 实现一个dict,然后写入不同的文件
-
@TigerhawkT3 大约有 10 个标题顶部和每个标题上大约 40K 项,所以我使用 try 而不是 if
-
您能否逐行遍历文件并使用简单的
str.partition或str.split将每行的标题与文本分开,避免re.split?此外,您正在打印每个idx,并且打印实际上非常慢。
标签: python regex string python-2.7