删除字符串末尾的 Space 但保留新行符号

Remove Space at end of String but keep new line symbol

如何检查 Python 字符串在换行 之前是否有 单个 space?如果是这样,我必须删除那个 space,但保留换行符号。这可能吗?

def remspace(my_str):
    if len(my_str) < 2: # returns ' ' unchanged
        return my_str
    if my_str[-1] == '\n':
        if my_str[-2] == ' ':
            return my_str[:-2] + '\n'
    if my_str[-1] == ' ':
        return my_str[:-1]
    return my_str

结果:

>>> remspace('a b c')
'a b c'
>>> remspace('a b c ')
'a b c'
>>> remspace('a b c\n')
'a b c\n'
>>> remspace('a b c \n')
'a b c\n'
>>> remspace('')
''
>>> remspace('\n')
'\n'
>>> remspace(' \n')
'\n'
>>> remspace(' ')
' '
>>> remspace('I')
'I'

将“\n”的特定实例替换为“\n”如何?

s1 = 'This is a test \n'
s1.replace(' \n', '\n') 
>>> 'This is a test\n'

s2 = 'There is no trailing space here\n'
s2.replace(' \n', '\n')
>>> 'There is no trailing space here\n'

如果要去除多个空格,可以使用正则表达式:

import re

def strip_trailing_space(my_string):
    return re.sub(r' +(\n|\Z)', r'', my_string)

def strip_trailing_whitespace(my_string):
    return re.sub(r'[ \t]+(\n|\Z)', r'', my_string)

输入文件:

filea.txt(有很多空格)


龙珠

test.py

filea = 打开('filea.txt','r')
fileb = open('fileb.txt','a')
对于 filea 中的行:
对于我在范围内(len(行)):
如果“\n”在行中:
line = line.replace('\n','\n')
fileb.write(行)

操作:

fileb.txt


龙珠