首页 > 解决方案 > 替换每行第一个单词中所有匹配正则表达式的匹配项

问题描述

我想解析一个 ASCII 文件并转义“。” 每行的第一个单词中的字符。这是一个例子:

line='DXa0.Xa1.a2 p1 p2 deviceName  a=157.585p b=54.46u $x=106.124 $y=107.996 $a=0'

我想制作以下

DXa0\.Xa1\.a2 p1 p2 deviceName  a=157.585p b=54.46u $x=106.124 $y=107.996 $a=0

我可以为此示例运行以下命令:

re.sub(r"\.", '\\.', line, count=2 )

但这假设 2“。” 单词中的字符,这是无法保证的。我现在找到的解决方法是

re.sub(r"\.", '\\.', line.split(' ', 1)[0]) + ' ' + line.split(' ', 1)[1]

它产生了预期的结果,但这并不漂亮,我相信有更好的方法。

标签: pythonregexpython-3.x

解决方案


必须坚持re吗?

没有它很容易:

p = line.partition(' ')

escaped = p[0].replace(r'.', r'\.') + p[1] + p[2]

escaped
Out:
'DXa0\\.Xa1\\.a2 p1 p2 deviceName  a=157.585p b=54.46u $x=106.124 $y=107.996 $a=0'

推荐阅读