所以我在(在堆栈溢出的类型贡献者的帮助下)匹配项目编号:
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
我不确定我是否可以在断言后面使用变量.. 非常感谢我来到这里的所有帮助!
编辑:原来唯一的问题是第二个正则表达式中不需要的插入符号。
答案 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
>>>