[英]Remove multiple spaces from list
Given list: 给定列表:
>>> l1 = ['1, A Ab','2,B Bc ','3, C Cd ']
- First element is having 2 spaces before
A Ab
. 第一个元素在A Ab
之前有2个空格。- Second element is having 1 space after
B Bc
. 第二个元素在B Bc
之后具有1个空格。- 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.