我有一个列表正在尝试重新格式化。
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 nn 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 ')
但是,我仍然得到相同的输出。
我怎样才能删除";\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替换字符串中最左边不重叠的模式而获得的字符串。如果找不到模式,则返回的字符串将保持不变。
这是re.sub
在这种情况下使用的一种方式:
>>> import re
>>> mystring = ' string string tnn 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中regex的信息,这里有一些有用的链接:
- 官方文件
- 关于regex的谷歌开发者页面
- w3school regex python
- programiz-python-regex及其示例