如何在Python中解析特定文本并包含同一行的其他内容
我在想怎么能找到特定的文字,不过我不仅想找到这些文字,还想把同一行里所有的内容都找出来。
这是我的代码
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)
这是一个文本文件的例子
- 在7月4日,我要庆祝一个叫做独立日的节日!
- 在1月1日,是新年,一个国际节日!
- 在11月30日,我要庆祝我朋友的生日。
我想从这个文本文件中找出所有包含“节日”的行,并把整行内容打印出来,像这样:
- 在7月4日,我要庆祝一个叫做独立日的节日!
- 在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)