我有一个Python脚本,循环执行多个搜索/替换正则表达式操作,其中之一是去除末尾空格。 我已经尝试过:
re.sub(r"""\s+$""", '', str)
re.sub(r""" +$""", r"""""", str)
并且
re.sub(r""" +$""", r"""""", str, re.M)
我发现有些答案只是建议使用strip
,但我的问题是我想将其整合到正则表达式替换机制中。
我有一个Python脚本,循环执行多个搜索/替换正则表达式操作,其中之一是去除末尾空格。 我已经尝试过:
re.sub(r"""\s+$""", '', str)
re.sub(r""" +$""", r"""""", str)
并且
re.sub(r""" +$""", r"""""", str, re.M)
我发现有些答案只是建议使用strip
,但我的问题是我想将其整合到正则表达式替换机制中。
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()
re
怎么知道要替换哪个字符串呢? - Martin Enderre.sub(Exp, RepExp, FileDump, re.M)
,但它在一个循环内部,我不想分享不必要的代码。 - Mystic Odin使用正则表达式可以去除尾部空格:
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)
sub
的结果重新赋值给str
吗?否则str
就永远不会改变了。 - Martin Ender0
,这不会跳过count
。 - Martin Ender