我相信這可以用正則表達式bux不能找到正確的語法。取代單個空間,但不是多個空間python
'SYS W$_FIasdfLESTATXS TABLE PARTITION 0 '
在我的文件中的第三字段有時具有空間分隔輸出需要被轉換爲下劃線分離式輸出,使上述將成爲此。
'SYS W$_FIasdfLESTATXS TABLE_PARTITION 0 '
第三個字段並不總是相同,但當空間分離時,它將始終有一個空格。這怎麼能在Python中完成?
我相信這可以用正則表達式bux不能找到正確的語法。取代單個空間,但不是多個空間python
'SYS W$_FIasdfLESTATXS TABLE PARTITION 0 '
在我的文件中的第三字段有時具有空間分隔輸出需要被轉換爲下劃線分離式輸出,使上述將成爲此。
'SYS W$_FIasdfLESTATXS TABLE_PARTITION 0 '
第三個字段並不總是相同,但當空間分離時,它將始終有一個空格。這怎麼能在Python中完成?
這是你想要的正則表達式:s/([^ ]) ([^ ])/\1_\2/g
在Python:
>>> import re
>>> my_string='SYS W$_FIasdfLESTATXS TABLE PARTITION 0 '
>>> re.sub(r'([^ ]) ([^ ])',r'\1_\2',my_string)
'SYS W$_FIasdfLESTATXS TABLE_PARTITION 0 '
真棒,did not知道如何反向引用那樣,這一個也可以工作re.sub(r'(\ S)(\ S)',r'\ 1_ \ 2',x) – user1601716
您的正則表達式更好地表示爲s /(\ S)\ S(\ S)/ \ 1_ \ 2/g' – dawg
使用回顧後和前瞻:
(?<=\w) (?=\w)
或者
(?<=\S)\s(?=\S)
在Python:
>>> s='SYS W$_FIasdfLESTATXS TABLE PARTITION 0 '
>>> re.sub(r'(?<=\S)\s(?=\S)', '_', s)
'SYS W$_FIasdfLESTATXS TABLE_PARTITION 0 '
使用這種模式
(?<!) (?!)
(?<! # Negative Look-Behind
# " " a white space
) # End of Negative Look-Behind
# " " a white space
(?! # Negative Look-Ahead
# " " a white space
) # End of Negative Look-Ahead
您可能希望與玩玩具一樣http://rubular.com/練你的正則表達式技巧。 PS回答你的問題是在該網站的工具提示;) –
看到檢查你的語法http://www.regexr.com – Zaaferani
所以如果你這樣做(\ S \ S)你可以得到'EP',但我是在這種情況下,不確定如何引用它以用E_P替換它。有什麼想法嗎? – user1601716