1
我有一個字符串,我想將其拆分成某些類型的列表。例如,我想分割Starter Main Course Dessert
到[Starter, Main Course, Dessert]
在Python中分割字符串,但在子字符串中使用空格
我不能使用split(),因爲它會分割Main Course
類型。我怎麼做分裂?是否需要正則表達式?
我有一個字符串,我想將其拆分成某些類型的列表。例如,我想分割Starter Main Course Dessert
到[Starter, Main Course, Dessert]
在Python中分割字符串,但在子字符串中使用空格
我不能使用split(),因爲它會分割Main Course
類型。我怎麼做分裂?是否需要正則表達式?
如果你有可以接受的單詞的列表,你可以使用正則表達式工會:
import re
acceptable_words = ['Starter', 'Main Course', 'Dessert', 'Coffee', 'Aperitif']
pattern = re.compile("("+"|".join(acceptable_words)+")", re.IGNORECASE)
# "(Starter|Main Course|Dessert|Coffee|Aperitif)"
menu = "Starter Main Course NotInTheList dessert"
print pattern.findall(menu)
# ['Starter', 'Main Course', 'dessert']
如果你只是想指定特殊子應該匹配,你可以使用:
acceptable_words = ['Main Course', '\w+']
我認爲只指定'特殊'兩個單詞標記更實用。
special_words = ['Main Course', 'Something Special']
sentence = 'Starter Main Course Dessert Something Special Date'
words = sentence.split(' ')
for i in range(len(words) - 1):
try:
idx = special_words.index(str(words[i]) + ' ' + words[i+1])
words[i] = special_words[idx]
words[i+1] = None
except ValueError:
pass
words = list(filter(lambda x: x is not None, words))
print(words)
你將不得不爲了做到這一點要知道無論是詞或部分詞,或佈局.. – TheLazyScripter
匹配什麼'主要Course'但不是'初學者Main'或'場Dessert'(從'初學者主菜甜點')?這是不可能的,AFAIK。 – Dev
是的,我知道我想分裂成的詞,但我不知道如何從原始字符串中做到這一點 –