如何在Python中解析特定文本并包含同一行的其他内容

2 投票
1 回答
35 浏览
提问于 2025-04-14 16:08

我在想怎么能找到特定的文字,不过我不仅想找到这些文字,还想把同一行里所有的内容都找出来。

这是我的代码

txt_file = open("test.txt",'r')
txt = txt_file.read()
txt_file.close()

count = 0

print("counting")
for data in txt:
    data = txt.strip()
    if data.find("holiday"):
        count = count + 1
print(count)
print(data)

这是一个文本文件的例子

  1. 在7月4日,我要庆祝一个叫做独立日的节日!
  2. 在1月1日,是新年,一个国际节日!
  3. 在11月30日,我要庆祝我朋友的生日。

我想从这个文本文件中找出所有包含“节日”的行,并把整行内容打印出来,像这样:

  1. 在7月4日,我要庆祝一个叫做独立日的节日!
  2. 在1月1日,是新年,一个国际节日!

我之前在网上查过怎么做,但没找到我想要的答案。

1 个回答

1

我建议你用 readlines() 来代替 read(),这样你会得到一个列表,每一行都是一个字符串,而不是把整个文件当成一个字符串。

txt_file = open("test.txt",'r')
txt = txt_file.readlines()
txt_file.close()

我还推荐你在读取文件时使用 with,因为这样即使出现错误,文件也会自动关闭。

with open("test.txt", "r") as txt_file:
    txt = txt_file.readlines()

接着,你可以用 in 操作符来查找包含“holidays”这个字符串的行。如果你把打印语句放在循环里面,它就会打印出每一行匹配的内容。

for data in txt:
    if "holiday" in data:
        count = count + 1
        print(data)

如果你想以后对匹配的行进行更多处理,也可以把它们保存到一个单独的数据结构里,而不仅仅是打印出来。

matches = []

for data in txt:
    if "holiday" in data:
        count = count + 1
        matches.append(data)

print(matches)

撰写回答