在python 3中,如何从一个文件中读取一个字符串,直到一个设置的字符(例如读取单词“hello world­this a string”,直到­)

2024-06-08 08:06:54 发布

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

抱歉,如果我的英语不好,我正在用python制作一些东西,需要帮助解决我遇到的一个问题。我遇到的问题是,我需要能够在一个txt文件中获取信息,直到由一个关键字符(如-)表示的点,然后需要能够获取字符串的下一部分,从第一个到下一个,等等。这是因为所有的字符串都有不同的长度,可以改变,也会改变,所以如果我有字符串

‘znPbB t7<;)\oWk#u feGTIT:7{ZO9?S9$v9vpd}Z#EMKC'

在便笺簿文件中,我需要它显示为

‘znPbB t7<;)\oWk_feGTIT:7{'

当我想要第二个的时候,它应该是

“ZO9?S9$v9vpd}Z#EMKC”


Tags: 文件字符串lttxt字符关键便笺t7
2条回答

一种解决方案是拆分字符串。另一种方法是使用re模块。测试时,我将字符改为anö:

import re

text = 'znPbB t7<)!\oWk_feGTIT:7{.öZO9?S9$v9vpd}Z#EMKCöjndIJ%349HBhslö'
regex_result = re.findall(r"(?!ö).*?(?=ö)", text)
split_result = text.split("ö")

这两个结果之间的区别在于str.split如果字符(在我的示例中为“ö”)是最后一个字符,则包含一个空字符串

split_result[:-1] == regex_result # < - This is True

正则表达式可以分为三部分(?!ö)是一个否定的前瞻,它将“ö”从结果中排除.*?匹配任何东西(?=ö)是一个前瞻性的概念,它告诉我们需要“ö”,但不能包含在匹配中

我会使用split:

s = 'znPbB t7<)!\oWk_feGTIT:7{.¬ZO9?S9$v9vpd}Z#EMKC¬'
s.split('¬')
# returns
['znPbB t7<)!\\oWk_feGTIT:7{.', 'ZO9?S9$v9vpd}Z#EMKC', '']

相关问题 更多 >