Python 如何从具有特定条件的字符串中选择特定字符
我目前正在从事主题建模工作,我有一本字典,其中包含每个主题的信息以及与该主题对应的电影(如下所示): 在主题中,这些词都附有它们的词概率,因为这就是我如何从LDA中提取它们的方法 我想要的是,从这些主题中,只选择相关的词语,实现如下目标:Python 如何从具有特定条件的字符串中选择特定字符,python,regex,string,Python,Regex,String,我目前正在从事主题建模工作,我有一本字典,其中包含每个主题的信息以及与该主题对应的电影(如下所示): 在主题中,这些词都附有它们的词概率,因为这就是我如何从LDA中提取它们的方法 我想要的是,从这些主题中,只选择相关的词语,实现如下目标: {'Topic 49': ['alien science_fiction adventure action 2000', array(['Avatar', 'Men in Black 3', 'Transformers: Age of Extinction
{'Topic 49': ['alien science_fiction adventure action 2000',
array(['Avatar', 'Men in Black 3', 'Transformers: Age of Extinction',
'Green Lantern', 'Men in Black II',
'Final Fantasy: The Spirits Within', 'Treasure Planet',
'Men in Black', 'A.I. Artificial Intelligence', 'Mission to Mars',
'Independence Day', 'Titan A.E.', 'Sphere', 'Signs',
'AVP: Alien vs. Predator', 'Zathura: A Space Adventure',
'My Favorite Martian', 'I Am Number Four'], dtype=object)],...}
我试过好几种方法,但似乎无法奏效
我尝试过保留所有角色,但后来我也失去了2000这样的术语,它描述了电影年
我是否可以只选择*之后的单词(或年份中的数字)并用+号分隔
希望这是清楚的 您可以使用正则表达式仅提取主题中“%”之间的单词
试试这样:\“*?\”您可以使用
re
模块
import re
ss = {'Topic 49': ['0.039*"alien" + 0.038*"science_fiction" + 0.020*"adventure" + 0.020*"action" + 0.017*"2000"',
array(['Avatar', 'Men in Black 3', 'Transformers: Age of Extinction',
'Green Lantern', 'Men in Black II',
'Final Fantasy: The Spirits Within', 'Treasure Planet',
'Men in Black', 'A.I. Artificial Intelligence', 'Mission to Mars',
'Independence Day', 'Titan A.E.', 'Sphere', 'Signs',
'AVP: Alien vs. Predator', 'Zathura: A Space Adventure',
'My Favorite Martian', 'I Am Number Four'], dtype=object)],...}
s = [re.search(r'\"\w*\"', s).group(0).strip('"') for s in ss['Topic 49'][0].split('+')]
# print(s)
# ['alien', 'science_fiction', 'adventure', 'action', '2000']
假设字符串的格式非常严格,这可以通过pythons内置的字符串和数组操作函数实现:
my_string = '0.039*"alien" + 0.038*"science_fiction" + 0.020*"adventure" + 0.020*"action" + 0.017*"2000"'
sanitized_string = my_string.split('"')[1::2]
结果:
['alien', 'science_fiction', 'adventure', 'action', '2000']
这非常有效,非常感谢!您对我可以更熟悉regex的好资源有什么建议吗?因为所有这些条件对我来说仍然有点困惑。再次感谢您的时间!Regex101通常是我的方法。这是一个比我建议的更干净的实现
['alien', 'science_fiction', 'adventure', 'action', '2000']