python - 在文件中查找字符串并复制直到Python中出现特定字符

标签 python string file

我有多个 .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'

Demo on regex101

(在正则表达式前面加上 (?s) 与提供 re.DOTALL 参数具有相同的效果。)

关于python - 在文件中查找字符串并复制直到Python中出现特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199185/

相关文章:

python - python aiohttp和asyncio没有循环事件

python - 为什么我的 Amazon S3 key 权限不固定?

javascript - 当我将我的代码运行到 Repl.it 软件中时,它无法识别我的任何变量

C#/.NET : Can I get a string of valid HTML from a Stream?

Python:如何从两个文件创建一个哈希值

python - 使用 python 将 CSV 转换为 AVRO

objective-c - 替换 objective-c 中的转义字符序列

java - Boggle 求解器的实现

java - 如何在 Java 中向文件追加对象?

python - Groupby 和值计数类别