如何获得列表以修复列表中的空格。
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']
答案 0 :(得分:2)
strip()方法将从字符串的末尾删除所有字符。在你的情况下,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()而不是string(),它同时执行字符串的开头和结尾),并且如果原始字符串中存在一个,则添加一个新行。
答案 1 :(得分:1)
您的代码在脚本中没用;您只是看到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]
答案 2 :(得分:1)
您可以使用正则表达式:
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']
答案 3 :(得分:1)
又快又脏:
m = [x.replace(&#39; \ n&#39;,&#39; \ n&#39;)for x in m]
如果您知道只有一个空格位于&#39; \ n&#39;
之前