bio*_*ant 3 python regex loops for-loop file
所以我试图将文件的每一行与正则表达式匹配,我做了以下事情:
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)
Run Code Online (Sandbox Code Playgroud)
预期输出是每行中的特定 6 个字符,而是出现如下错误:
Traceback (most recent call last):
File "exercise.py", line 74, in <module>
match=regex.search(line)
AttributeError: 'str' object has no attribute 'search'
Run Code Online (Sandbox Code Playgroud)
我发现(从下面的链接)要将正则表达式与文件的每一行匹配,必须首先将文件转换为 file.read() 列表
要重新处理帖子,是否有更简单的方法(最好超过 1 行而不是 2 行)?
humsavar=open('/home/jyt109/humsavar.txt')
text=humsavar.read()
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想你可能误解了那个链接的意思。如果您的正则表达式匹配可以跨越多行,那么您需要使用file.read()
. 如果换行符永远不会成为匹配的一部分,那么您可以逐行读取文件并尝试分别匹配每一行。
如果要分别检查每一行,可以使用file.readlines()
获取行列表或仅遍历文件对象,例如:
with open('/home/jyt109/humsavar.txt') as f:
for line in f:
match = regex.search(line)
Run Code Online (Sandbox Code Playgroud)
假设您仍然想一次读取整个文件内容,您可以像这样在一行中执行此操作:
text = open('/home/jyt109/humsavar.txt').read()
Run Code Online (Sandbox Code Playgroud)