替换单个空格但不是多个空间python

时间:2015-04-28 15:45:18

标签: python regex

我相信这可以用正则表达式来完成bux似乎无法找到正确的语法。

'SYS           W$_FIasdfLESTATXS               TABLE PARTITION           0    '

我文件中的第三个字段有时会有空格分隔的输出,需要转换为下划线分隔输出,所以上面会变成这个。

'SYS           W$_FIasdfLESTATXS               TABLE_PARTITION           0    '

第三个字段并不总是相同,但是当空格分隔时,它将始终具有单个空格。如何在python中完成?

3 个答案:

答案 0 :(得分:1)

这是您想要的REGEX: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    '

答案 1 :(得分:0)

使用lookbehind和lookahead:

(?<=\w) (?=\w)

或者

(?<=\S)\s(?=\S)

Demo

在Python中:

>>> s='SYS           W$_FIasdfLESTATXS               TABLE PARTITION           0    '
>>> re.sub(r'(?<=\S)\s(?=\S)', '_', s)
'SYS           W$_FIasdfLESTATXS               TABLE_PARTITION           0    '

答案 2 :(得分:0)

使用此模式

(?<! ) (?! )

Demo

(?<!            # 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