我设法用空格替换所有标签。 发现:\ t 替换:空格
从第一个单词开始,我无法完成这项工作,并忽略该行开头的任何标签/空格。
在这个example中,我设法将行与第一个单词一起隔离,但是我现在如何用单个空格替换所有单独的选项卡(味道是Python)?
致以最诚挚的问候,
答案 0 :(得分:1)
在Python中,您可以捕获字符串的不同部分,并使用lambda表达式操纵re.sub
内的捕获组内容:
import re
s = """ s_Tmp = 'ERROR: month "' | s_Month | '" not valid - ABORT' | CHAR(13) | CHAR(10) ;"""
res = re.sub(r"^(\s*)(.*)", lambda x: "{}{}".format(x.group(1), x.group(2).replace("\t", " ")), s, flag=re.S)
print(res)
# => s_Tmp = 'ERROR: month "' | s_Month | '" not valid - ABORT' | CHAR(13) | CHAR(10) ;
请参阅Python demo
注意我将re.S
标志传递给正则表达式编译器,以便(.*)
(第二个捕获组可以在最初的0+空格之后匹配整个字符串的其余部分(匹配并捕获到第1组中) (\s*)
)。
<强>详情:
^
- 字符串的开头(\s*)
- 第1组捕获任何0+空白(.*)
- 第2组:字符串结尾的任何0+字符。处理在lambda x: "{}{}".format(x.group(1), x.group(2).replace("\t", " "))
内完成:制表符仅替换为Group 2值中的空格。