在Python中查找文件中的重复文本

2024-06-01 10:44:16 发布

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

我的文件包含如下文本:

# ER 1 - Text a
info sms ver=xxxxxxxx

# ER 2 - Text b
info call ver=xxxxxxxx

# ER 3 - Text c
info sms ver=yyyyyyyy

# ER 4 - Text d
info mms ver=xxxxxxxx

# ER 5 - Text e
info call ver=yyyyyyyy

我想通知用户“sms”和“call”存在于文件的多个位置。 输出如下:

^{pr2}$

我需要搜索所有以info“text”ver=。。。并查找文件的任何其他位置是否存在“text”,并通知“text”存在于文件的多个位置。在


Tags: 文件text用户文本infocallsmser
2条回答

在你的程序中,你可能正在分析有意义的数据结构。假设您最终得到了一个名为info的对象,您所关心的所有内容都作为属性存在于其中—例如,您可以执行以下操作:

print(info.sms)

把你读到的信息打印出来。在

这意味着,在最初读取数据时,首先要确定要将其存储在哪个字段中,然后再进行存储。在

所以,问题是,在你填写这个区域之前,这个物体的初始状态是什么?通常的选择是要么它根本没有字段(您可以通过第一次分配给它来创建它),要么它有某种默认值(通常是None)。您可以很容易地检查任何一种情况—在第一种情况下(可能更可能),您可以if hasattr(info, 'sms'):。第二步,你做if info.sms is not None:。如果字段已经有一个值-这意味着您已经在这个文件中为它读取了另一个值,并且它有多个条目,那么这些检查将成功。在

因此,您的代码如下所示:

^{pr2}$

我会选择regex:

import re
text="# ER 1 - Text a\ninfo sms ver=xxxxxxxx\n\n# ER 2 - Text b\ninfo call ver=xxxxxxxx\n\n# ER 3 - Text c\ninfo sms ver=yyyyyyyy\n\n# ER 4 - Text d\ninfo mms ver=xxxxxxxx\n\n# ER 5 - Text e\ninfo call ver=yyyyyyyy"
match1="info (.*) [^info]*"

print re.findall(match1,text) # -> ['sms', 'call', 'sms', 'mms', 'call']

你也许可以自己数数。在

相关问题 更多 >