簡體   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