[英]Reformatting string in List - Python
我有一个我正在尝试重新格式化的列表。
data = ['Height:\n \n 6\' 4"', 'Weight:\n \n 185 lbs.', 'Reach:\n \n 80"', 'STANCE:\n \n Switch', 'DOB:\n \n \n Jul 22, 1989', 'SLpM:\n \n\n 3.93', 'Str. Acc.:\n \n 49%', 'SApM:\n \n 2.67', 'Str. Def:\n \n 59%', '', 'TD Avg.:\n \n 0.00', 'TD Acc.:\n \n 0%', 'TD Def.:\n \n 78%', 'Sub. Avg.:\n \n 0.2']
我试过使用条带。
for info in data:
info.strip('\n \n ')
但是,我仍然得到相同的 output。
我如何能够删除列表的每个索引中的 "\n \n " 的空白。 要获得以下内容?
data = ['Height: 6\' 4"', 'Weight: 185 lbs.', 'Reach: 80"', 'STANCE: Switch', 'DOB: Jul 22, 1989', 'SLpM: 3.93', 'Str. Acc.: 49%', 'SApM: 2.67', 'Str. Def: 59%', '', 'TD Avg.: 0.00', 'TD Acc.: 0%', 'TD Def.: 78%', 'Sub. Avg.: 0.2']
尝试这个:
import re
def remove_multiple_ws(s: str) -> str:
return re.sub(r"\s+", " ", str(s))
data = [remove_multiple_ws(s) for s in data]
这是我的方法:用冒号和空格替换冒号和以下空格:
import re
pattern = re.compile(r":\s*")
new_data = [
pattern.sub(": ", datum)
for datum in data
]
new_data
然后变成:
['Height: 6\' 4"',
'Weight: 185 lbs.',
'Reach: 80"',
'STANCE: Switch',
'DOB: Jul 22, 1989',
'SLpM: 3.93',
'Str. Acc.: 49%',
'SApM: 2.67',
'Str. Def: 59%',
'',
'TD Avg.: 0.00',
'TD Acc.: 0%',
'TD Def.: 78%',
'Sub. Avg.: 0.2']
您可以使用re.sub
替换任何重复的空格等。
从文档中:
re.sub(pattern, repl, string, count=0, flags=0)
返回通过替换 repl 替换 string 中最左边的不重叠出现的模式获得的字符串。 如果未找到该模式,则字符串原封不动地返回。
这是在这种情况下可以使用re.sub
的一种方式:
>>> import re
>>> mystring = ' string string \t\n\n string'
>>> pattern = re.compile(r'\s+')
>>> pattern.sub(" ", mystring)
'string string string'
使用此方法,您的代码实现将如下所示:
pattern = re.compile(r"\s+")
new_data = [pattern.sub(" ",part) for part in data]
这是new_data
应该是什么:
kali@kali:~$ python3 test.py -i
>>> new_data
['Height: 6\' 4"',
'Weight: 185 lbs.',
'Reach: 80"',
'STANCE: Switch',
'DOB: Jul 22, 1989',
'SLpM: 3.93',
'Str. Acc.: 49%',
'SApM: 2.67',
'Str. Def: 59%',
'',
'TD Avg.: 0.00',
'TD Acc.: 0%',
'TD Def.: 78%',
'Sub. Avg.: 0.2']
如果您想了解更多关于 python 中的正则表达式的信息,这里有一些有用的链接:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.