我有多个 .txt 文件,其中的信息在转换后如下所示:
> ** ** **|** ** STYLE # ** **|** ** DESCR : Potrero415;Tbl-
Rnd ** **\--------** ** ** **\--** **ZONE 1** **\--**
** ** **\--** **ZONE 2** **\--** ** ** **\----** ** -T1-
-T2- -T3-
**
我想抓取从 DESCR:
到下一行开始的所有内容 ** **\--** ** ZONE 2 **
所以我的字符串应该如下所示: DESCR : Potrero415;Tbl-Rnd
请注意,在此特定部分之前的文件中有多行文本,并且单词 DESCR
仅出现在我要复制的位置,之前没有出现其他内容。
我知道可以使用 split 直到出现 ** **\
所有文件的格式相同,只需从 DESCR:
到 ** **
我知道我冒着在这篇文章上遭到否决的风险。 更新: 我设法使用以下方法找到该词的出现:
lines = test.readlines()
test.close()
for line in lines:
line = line.strip()
if line.find("DESCR") != -1:
print("FOUND")
其中test
是我打开的文件
最佳答案
听起来像是正则表达式的工作。
s
是文件的内容。
>>> import re
>>> s = ''' > ** ** **|** ** STYLE # ** **|** ** DESCR : Potrero415;Tbl-
... Rnd ** **\--------** ** ** **\--** **ZONE 1** **\--**
... ** ** **\--** **ZONE 2** **\--** ** ** **\----** ** -T1-
... -T2- -T3-
...
...
... ** '''
>>>
>>> re.search('(DESCR\s*:.*?)\s*\*\* \*\*', s, re.DOTALL).group(1)
'DESCR : Potrero415;Tbl-\nRnd'
(在正则表达式前面加上 (?s) 与提供 re.DOTALL
参数具有相同的效果。)
关于python - 在文件中查找字符串并复制直到Python中出现特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199185/