2

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

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

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

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

4

1 回答 1

1

在这里,一旦您找到了数字,您就可以使用“旧样式”(.format如果您愿意也可以使用)字符串格式将其放入正则表达式中。我认为通过字典访问这些值会很好,因此命名匹配,但你可以不这样做。要获取流派列表,只需..split("|")下的字符串即可suggestionDict["Genres"]

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"])

生产

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

CLEAR EXAMPLE:
Voyage to the Bottom of the Sea 
>>> 
于 2013-05-01T09:10:28.037 回答