在reg-ex中使用变量

时间:2013-05-01 09:00:53

标签: python regex

所以我在(在堆栈溢出的类型贡献者的帮助下)匹配项目编号:

User Number 1 will probably like movie ID: RecommendedItem[item:557, value:7.32173]the most!

现在我正在尝试使用项目编号从另一个文本文件中提取相应的名称。其内容如下:

557::Voyage to the Bottom of the Sea (1961)::Adventure|Sci-Fi

出于某种原因,我只是在终端上提出“无”。找不到匹配项。

myfile = open('result.txt', 'r')
myfile2 = open('movies.txt', 'r')
content = myfile2.read()
for line in myfile:
    m = re.search(r'(?<=RecommendedItem\[item:)(\d+)',line)
    n = re.search(r'(?<=^'+m.group(0)+'\:\:)(\w+)',content)
    print n

我不确定我是否可以在断言后面使用变量.. 非常感谢我来到这里的所有帮助!

编辑:原来唯一的问题是第二个正则表达式中不需要的插入符号。

1 个答案:

答案 0 :(得分:1)

在这里,一旦你找到了这个号码,就可以使用'旧样式'(如果你愿意,可以同样使用.format)字符串格式将它放入正则表达式。我认为通过字典访问值是很好的,因此命名的匹配,你可以做到这一点,但没有这个。要获取流派列表,只需.split("|") suggestionDict["Genres"]下的字符串。{/ p>

import re
num = 557
suggestion="557::Voyage to the Bottom of the Sea (1961)::Adventure|Sci-Fi"

suggestionDict = re.search(r'%d::(?P<Title>[a-zA-Z0-9 ]+)\s\((?P<Date>\d+)\)::(?P<Genres>[a-zA-Z1-9|]+)' % num, suggestion).groupdict()
#printing to show if it works/doesn't
print('\n'.join(["%s:%s" % (k,d) for k,d in suggestionDict.items()]))
#clearer example of how to use
print("\nCLEAR EXAMPLE:")
print(suggestionDict["Title"])

Prodcuing

Title:Voyage to the Bottom of the Sea 
Genres:Adventure|Sci
Date:1961

CLEAR EXAMPLE:
Voyage to the Bottom of the Sea 
>>>