我無(wú)法找到以下問(wèn)題的直接解決方案。我在數(shù)據(jù)框中有一列,其中有 str 項(xiàng),例如:'RosemontCentral''Dollard-des-OrmeauxEast'我想在大寫(xiě)字母開(kāi)始的地方分隔一個(gè)字符串,但如果它前面有連字符則不分隔。例如:'RosemontCentral'到'Rosemont Central''Dollard-des-OrmeauxEast'到 'Dollard-des-Ormeaux East'到目前為止,我有波紋管正則表達(dá)式功能。它對(duì)諸如第一個(gè)沒(méi)有帶連字符的詞的項(xiàng)目做得相當(dāng)好。但是,不是那些有連字符的。此外,下面的正則表達(dá)式函數(shù)在字符串的最開(kāi)頭添加了一個(gè)不需要的前導(dǎo)空格。就像下面的那個(gè)。'Dollard-des-Ormeaux East'def add_space(Neighborhood): return re.sub( r"([A-Z])", r" \1", Neighborhood)df['Neighborhood'] = df['Neighborhood'].apply(add_space)df感謝您的時(shí)間
2 回答

哆啦的時(shí)光機(jī)
TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以嘗試向您的正則表達(dá)式模式添加一個(gè)回顧,斷言大寫(xiě)字母之前有一個(gè)非破折號(hào)字符:
def add_space(Neighborhood):
return re.sub(r'(?<=[^-])([A-Z])', r' \1', Neighborhood)
df['Neighborhood'] = df['Neighborhood'].apply(add_space)

慕碼人8056858
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
這將做:
def add_space(Neighborhood):
return re.sub("([a-z])([A-Z])","\g<1> \g<2>",Neighborhood)
add_space('Dollard-des-OrmeauxEast')
# 'Dollard-des-Ormeaux East'
add_space('RosemontCentral')
# 'Rosemont Central'
添加回答
舉報(bào)
0/150
提交
取消