替换单空格,但不替换多空格 Python



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

'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    '

使用回顾和前瞻:

(?<=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

最新更新