繁体   English   中英

REGEX查找给定字符串中的所有匹配项

[英]REGEX to find all matches inside a given string

我有一个问题,让我疯狂。 我有一个包含几百万个条目的列表,我需要从中提取产品类别。 每个条目如下所示: "[['Electronics', 'Computers & Accessories', 'Cables & Accessories', 'Memory Card Adapters']]"类型检查确实给了我字符串: print(type(item)) <class 'str'>现在我在网上搜索了一个可能的(并且最好快速 - 因为百万条目)正则表达式解决方案来提取所有类别。

我在这里找到了几个问题匹配来自python re的单引号 :我尝试了re.findall(r"'(\\w+)'", item)但只有空括号[] 然后我继续寻找像这样的替代方法: Python Regex在字符串 matches=re.findall(r'\\"(.+?)\\"',item) print(matches) 双引号查找字符串有人尝试以下matches=re.findall(r'\\"(.+?)\\"',item) print(matches) ,但在我的情况下这也失败了......

之后我尝试了一些愚蠢的方法来获得至少一个解决方法并在以后解决这个问题: list_cat_split = item.split(',')这给了我

e["[['Electronics'"," 'Computers & Accessories'"," 'Cables & Accessories'"," 'Memory Card Adapters']]"]

然后我尝试了字符串方法来摆脱这些东西然后应用正则表达式:

list_categories = []
for item in list_cat_split:
    item.strip('\"')
    item.strip(']')
    item.strip('[')
    item.strip()
    category = re.findall(r"'(\w+)'", item)
    if category not in list_categories:
        list_categories.append(category)

然而,即使这种方法失败了: [['Electronics'], []]我进一步搜索但没有找到合适的解决方案。 对不起,如果这个问题完全是愚蠢的,我是regex的新手,对于普通正则表达式用户来说这可能是一个明智的选择吗?

更新:

不知怎的,我不能回答我自己的问题,因此在这里有一个更新:感谢答案 - 对不完整的信息,我很少在这里问,并且通常会尝试自己找到解决方案..我不想使用数据库,因为这对于完全用Python编写的ML应用程序来说,这只是我预处理工作的一小部分。 这也适用于我的MSc项目,因此没有生产环境。 因此,我可以一劳永逸地使用速度较慢但工作正常的解决方案。 但是据我所知@FailSafe的解决方案对我有用我的jupyter笔记本截图在 这里结果列表

但是,我完全同意@WiktorStribiżew:在生产设置中,我肯定会建立一个数据库并让它运行一晚,...感谢所有的帮助,无论如何,这里很棒的人:-)

这可能不是您的最终答案,但它会创建一个类别列表。

x="[['Electronics', 'Computers & Accessories', 'Cables & Accessories', 'Memory Card Adapters']]"

y=x[2:-2]
z=y.split(',')

for item in z:
    print(item)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM