4 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用捕獲組來(lái)re.split
保留分隔符(此處的評(píng)論數(shù)):
re.split(r'(\d{1,3}(?:,\d{3})* reviews?)', s)

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
re.split只需根據(jù)小寫(xiě)字母后跟數(shù)字或大寫(xiě)字母之間的邊界拆分使用
>>> import re
>>> re.split(r'(?<=[a-z])(?=\d|[A-Z])', s)
['Eiffel Tower', '140,005 reviews', 'Observation Decks & Towers, Points of Interest & Landmarks']

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
(.+?)([\d\,]+ reviews)(.*)
這將按以下方式分組。
第 1 組:匹配直到達(dá)到數(shù)字后跟“評(píng)論”
第 2 組:將數(shù)字(包括逗號(hào))和“評(píng)論”匹配到一個(gè)字符串中
第 3 組:所有剩余的字符和符號(hào)。
Eiffel Tower140,005 reviewsObservation Decks & Towers, Points of Interest & Landmarks
輸出:
['Eiffel Tower', '140,005 reviews', 'Observation Decks & Towers, Points of Interest & Landmarks']
https://regex101.com/r/bDAVNb/2

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
該解決方案僅適用于該特定句子和遵循相同規(guī)則的其他句子。通過(guò)在循環(huán)中添加更多條件,它可以擴(kuò)展到其他句子結(jié)構(gòu)。對(duì)于初學(xué)者來(lái)說(shuō),它比正則表達(dá)式更容易閱讀。索引有點(diǎn)麻煩,但這是對(duì)您的快速修復(fù)。
我注意到拆分發(fā)生在字母和數(shù)字、小寫(xiě)字母和大寫(xiě)字母之間。所以你只需要遍歷句子并定義規(guī)則。
s='Eiffel Tower140,005 reviewsObservation Decks & Towers, Points of Interest & Landmarks'
result = []
temp = ''
for i in range(0, len(s)-1):
current_letter = s[i]
next_letter = s[i+1]
if current_letter.islower() and next_letter.isnumeric():
temp += current_letter
result.append(temp)
temp = ''
elif current_letter.islower() and next_letter.isupper():
temp += current_letter
result.append(temp)
temp = ''
else:
temp += current_letter
temp+= s[len(s)-1]
result.append(temp)
print(result)
添加回答
舉報(bào)