gpt4 book ai didi

逐行运行文件的python -regex匹配和for循环

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:24 26 4
gpt4 key购买 nike

所以我试图将文件的每一行与正则表达式匹配,我做了以下操作:

import re
regex='\S+\s+(\S{6})\s+VAR'
with open('/home/jyt109/humsavar.txt') as humsavar:
for line in humsavar:
match=regex.search(line)
print match.group(1)

预期输出是每行中特定的 6 个字符,但我收到如下错误:

Traceback (most recent call last):
File "exercise.py", line 74, in <module>
match=regex.search(line)
AttributeError: 'str' object has no attribute 'search'

我发现(从下面的链接)要将正则表达式匹配到文件的每一行,必须先通过 file.read() 将文件转换为列表

Match multiline regex in file object

要重新定位帖子,有没有更简单的方法(最好是 1 行而不是 2 行)?

humsavar=open('/home/jyt109/humsavar.txt')
text=humsavar.read()

谢谢!

最佳答案

我认为您可能误解了该链接的意思。如果正则表达式的匹配项可以跨越多行,那么您需要使用 file.read() 读取文件。如果换行符永远不会成为匹配的一部分,那么您可以逐行读取文件并尝试分别匹配每一行。

如果你想分别检查每一行,你可以使用 file.readlines() 来获取行列表或者只是遍历文件对象,例如:

with open('/home/jyt109/humsavar.txt') as f:
for line in f:
match = regex.search(line)

假设您仍然想一次读取整个文件内容,您可以像这样在一行中执行此操作:

text = open('/home/jyt109/humsavar.txt').read()

关于逐行运行文件的python -regex匹配和for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com