使用python删除尾随空格

时间:2013-06-27 18:35:29

标签: python regex python-2.7

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

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

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

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

我发现几个答案只是建议使用strip我的问题是我想在正则表达式替换机制中集成它。

2 个答案:

答案 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)

0count参数(其中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)