繁体   English   中英

重新格式化列表中的字符串 - Python

[英]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.

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