3

我有一个脚本可以遍历python中的几个搜索/替换正则表达式,其中一个操作是删除我尝试过的尾随空格:

re.sub(r"""\s+$""", '', str)

re.sub(r""" +$""", r"""""", str)

re.sub(r""" +$""", r"""""", str, re.M)

我发现了几个简单推荐使用strip我的问题的答案是我想将它集成到正则表达式替换机制中。

4

2 回答 2

7

该函数是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)

0count参数(其中表示没有0限制),然后在行尾匹配。如果您没有明确指定,则需要该附加参数,因为实际上是第五个。re.M$flagsflags

请注意,多行字符串只需要三引号。重要的是r模式。

或者,rstrip用于删除尾随空格:

str = str.rstrip()
于 2013-06-27T18:38:19.047 回答
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)
于 2017-07-23T11:27:39.143 回答