我有一个脚本循环遍历python中的几个搜索/替换正则表达式,其中一个操作是删除尾随空格 我试过了:
re.sub(r"""\s+$""", '', str)
re.sub(r""" +$""", r"""""", str)
和
re.sub(r""" +$""", r"""""", str, re.M)
我发现几个答案只是建议使用strip
我的问题是我想在正则表达式替换机制中集成它。
答案 0 :(得分:6)
该函数为sub
,并将目标字符串作为参数(并返回修改后的副本):
str = re.sub(r'\s+$', '', str)
或者如果要从单个字符串中的多行中删除尾随空格,请使用以下方法之一:
str = re.sub(r'\s+$', '', str, 0, re.M)
str = re.sub(r'\s+$', '', str, flags=re.M)
0
是count
参数(其中0
表示无限制),然后re.M
使$
在行结尾处匹配。如果您未明确指定flags
,则需要该附加参数,因为flags
实际上是第五个参数。
请注意,您只需要多行字符串的三重引号。重要的是模式的r
。
或者,rstrip
用于删除尾随空格:
str = str.rstrip()
答案 1 :(得分:1)
这使用正则表达式删除尾随空格:
import os
import re
PATH = '/path/to/source'
re_strip = re.compile(r'[ \t]+(\n|\Z)')
for path, dirs, files in os.walk(PATH):
for f in files:
file_name, file_extension = os.path.splitext(f)
if file_extension == '.py':
path_name = os.path.join(path, f)
with open(path_name, 'r') as fh:
data = fh.read()
data = re_strip.sub(r'\1', data)
with open(path_name, 'w') as fh:
fh.write(data)