在文件中查找字符串并进行复制,直到特定字符出现在Python中

2024-10-08 19:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个.txt文件,其中的信息在转换后如下所示:

    >  **   ** **|** **     STYLE #        ** **|** **   DESCR  :  Potrero415;Tbl-
Rnd                 ** **\--------** **         ** **\--** **ZONE  1** **\--**
**           ** **\--** **ZONE  2** **\--** **      ** **\----** **      -T1-
-T2-  -T3-


                ** 

我想获取从DESCR:到下一行开始的** **\--** ** ZONE 2 **的所有内容 所以我的字符串应该是这样的:DESCR : Potrero415;Tbl-Rnd 请注意,在这个特定部分之前的文件中有多行文本,并且单词DESCR只出现在我想复制的地方,之前没有其他出现。在

我知道split可以一直使用到** **\ 所有文件都有相同的格式,只需查找从DESCR:到{}

我知道我冒着在这个职位上被否决的风险。 更新: 我设法找到了这个词的外观:

^{pr2}$

其中test是我打开的文件


Tags: 文件字符串文本txt信息zone内容style
2条回答

你可以用正则表达式

import re

match = re.search('(?=DESCR).*?(?=\*\*)', your_txt)
print(match.group(0))

将输出:

DESCR : Potrero415;Tbl-Rnd

Regex Demo with your test string

其中:

^{pr2}$

听起来像是一个正则表达式的工作。在

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参数的效果相同。)

相关问题 更多 >

    热门问题