簡體   English   中英

使用多個定界符分割Python字符串

[英]Split a Python String Using Multiple Delimiters

我要嘗試標記化的模式s[num][alpha1][alpha2].ext ,文件名有點復雜。 從中繪制alpha1和alpha2的詞典包含在兩個列表中。

我在https://stackoverflow.com/questions/4998629/python-split-string-with-multiple-delimiters上發現了這個問題,但沒有解決我的問題。

[num][alpha1] ,數字在字母(相當容易的正則表達式)之前,但是在[alpha1][alpha2]之間,我在兩個單詞之間分割。

例如,給定文件名s13LoremIpsum.ext ,我想要("s", "13", "Lorem", "Ipsum")

做到這一點的最佳方法是什么?

請注意,在這種特殊情況下, [alpha2]是一個字母,但我對這種情況以及[alpha1][alpha2]是任意長度的單詞的一般情況下的解決方案感興趣。 還應注意,如果通過組合來自各個詞典的單詞進行多個拆分,則一般情況可能會引入歧義,例如

alpha1 = ["a", "ab"]
alpha2 = ["bc", "c"]
# How will we split?
splitString == ("a", "bc")
# --OR--
splitString == ("ab", "c")

然而,解決這種歧義是次要問題。

alpha1, alpha2 = ["a", "ab", "Lorem"], ["bc", "c", "Ipsum"]
import re
pattern = re.compile("(s)(\\d+)("+"|".join(alpha1) + ")(" + "|".join(alpha2)+")")
data = "s13LoremIpsum.ext"
result = [pattern.match(data).group(i) for i in range(1, 5)]
print result

輸出量

['s', '13', 'Lorem', 'Ipsum']

可以像這樣檢查實際的編譯模式

print pattern.pattern

哪個打印

(s)(\d+)(a|ab|Lorem)(bc|c|Ipsum)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM