繁体   English   中英

如何删除具有特定字符的列表中的空格

[英]how to remove spaces in a list that has a specific character

如何获取列表以固定列表中的空格m。

m = ['m, a \n', 'l, n \n', 'c, l\n']
for i in m:
    if (' ') in i:
        i.strip(' ')

我有:

'm, a \n'
'l, n \n'
'c, l\n'

我希望它返回:

['m, a\n', 'l, n\n', 'c, l\n']

strip()方法将从string的末尾去除所有字符。 在您的情况下,strip从字符串的末尾开始,遇到一个'\\ n'字符,然后退出。

似乎不太清楚您要做什么,但我将假设您正在寻找清除字符串的最后一个非空白字符和换行符之间的空白。 如果我错了纠正我。

有很多方法可以做到这一点,但这可能不是最好的方法,但这是我想出的:

m = ['This, is a string. \n', 'another string!    \n', 'final example\n    ']

m = map(lambda(x): x.rstrip() + '\n' if x[-1] == '\n' else x.rstrip(' '), m)

print(m)

['This, is a string.\n', 'another string!\n', 'final example\n']

在这里,我使用内置的map函数遍历每个列表元素,并从字符串的结尾(rstrip()代替了同时执行开头和结尾的strip())中删除所有空白,并在其中添加新行是原始字符串中的一个。

您的代码在脚本中不会有用; 您只看到REPL显示表达式i.strip(' ') 在脚本中,该值将被忽略。

要创建列表,请使用列表理解:

result = [i.strip(' ') for i in m if ' ' in i]

但是请注意, strip仅从两端删除请求的字符; 在您的数据中,空格换行符之前 您还需要执行类似删除换行符的操作,然后放回去:

    result = ["%s\n" % i.strip() for i in m if ' ' in i]

您可以使用正则表达式:

import re
m = ['m, a \n', 'l, n \n', 'c, l\n']
final_m = [re.sub('(?<=[a-zA-Z])\s+(?=\n)', '', i) for i in m]

输出:

['m, a\n', 'l, n\n', 'c, l\n']

快速又肮脏:

m = [x在m中的x.replace('\\ n','\\ n')]

如果您知道'\\ n'之前只有一个空格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM