我有一个文件有很多行。每一行都以{“id”开头:后跟引号中的id号。(即{“id”:“106”)。我正试图使用正则表达式逐行搜索整个文档,并打印与5个不同id值匹配的行。为此,我用id创建了一个列表,并希望只在列表中重复以{“id”:(列表中的id号)开头的匹配行).我真的不知道该怎么做。以下是我目前掌握的情况:
f= "bdata.txt"
statids = ["85", "106", "140", "172" , "337"]
x= re.findall('{"id":', statids, 'f')
for line in open(file):
print(x)
我一直得到的错误代码是:TypeError:amp;:“str”和“int”的操作数类型不受支持
我需要把整条线匹配起来,这样我就可以把它拆分成一个类
有什么建议吗?谢谢你的时间
这里的问题是您使用re.findall的方式,根据docs,您必须将正则表达式作为第一个参数传递,并将要匹配表达式的字符串作为第二个参数传递。就你而言,我认为你应该这样做:
在正则表达式中,管道操作符“|”通过将所有id连接为一个字符串,并在它们之间插入|来查找与一个id或另一个id匹配的所有情况。match.group行返回找到它的位置
您可以使用regex,
^\{\"id\": \"(\d+)\"
从行中检索id,其中组#1的值将为您提供id。然后,您可以检查该id是否存在于statids
中演示:
对于文件中的以下示例内容:
输出将是:
相关问题 更多 >
编程相关推荐