简体   繁体   English

从列表中删除多个空格

[英]Remove multiple spaces from list

Given list: 给定列表:

>>> l1 = ['1,  A Ab','2,B Bc ','3, C Cd ']
  1. First element is having 2 spaces before A Ab . 第一个元素在A Ab之前有2个空格。
  2. Second element is having 1 space after B Bc . 第二个元素在B Bc之后具有1个空格。
  3. Third element is 1 space each side of C Cd . 第三个元素是C Cd每边1个空格。

Want to remove n numbers of spaces occures before/after the element values. 要删除元素值之前/之后出现的n个空格。

Expected Result: 预期结果:

['1,A Ab','2,B Bc','3,C Cd']

My try: 我的尝试:

>>> import re
>>> l2 = [re.sub(r"\s{2,}", "", s) for s in l1]
>>> l2
['1,A Ab', '2,B Bc ', '3, C Cd ']

Still getting spaces in second and third element. 仍然在第二和第三元素中获得空格。

Using a list comprehension. 使用列表理解。

Ex: 例如:

l1 = ['1,  A Ab','2,B Bc ','3, C Cd ']
print( [",".join(map(str.strip, i.split(","))) for i in l1] )

Output: 输出:

['1,A Ab', '2,B Bc', '3,C Cd']

Try this. 尝试这个。 it uses list comprehension . 它使用列表理解

>>> l1 = ['1,  A Ab','2,B Bc ','3, C Cd ']
>>>
>>> l1 = [",".join([s.strip() for s in item.split(",")]) for item in l1]
>>>
>>> l1
['1,A Ab', '2,B Bc', '3,C Cd']
>>>

Another way to achieve the same, 实现此目的的另一种方法,

import re
l1 = ['1,  A Ab','2,B Bc ','3, C Cd ']
new_list = [re.sub(', +',',', i).strip() for i in l1]

Output 产量

['1,A Ab', '2,B Bc', '3,C Cd']

Try it: 试试吧:

import re
l1 = ['1,  A Ab','2,B Bc ','3, C Cd ']
l2 = [re.sub(r"\s{2,}|(?<=,)\s|\s$","",s) for s in l1]
l2

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

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