Python将字符串转换为忽略特殊字符的列表

2024-09-28 15:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串:

'Current Weather\n\t\n\n\t\t12:36 AM\n\t\n\n\n\n\t\t\t22°\n\t\t\n\n\t\t\t\tC\n\t\t\t\n\n\n\t\tRealFeel®\n\t\t20°\n\t\n\n\t\tMostly clear'

我想将其转换为以下列表:-

['Current Weather','12:36 AM','22°','C','RealFeel®','20°','Mostly clear']

是否有任何python模块或函数可供我使用


Tags: 模块字符串列表currentamtcweatherclear
3条回答

不带正则表达式:

[x.strip() for x in st.splitlines() if x.strip()!= '']

输出:

['Current Weather', '12:36 AM', '22°', 'C', 'RealFeel®', '20°', 'Mostly clear']

为什么每个人都在使用re?这个库非常慢。你可以直接使用str.split,如果你将它与参数一起使用,你必须手动执行str.isspace,但它仍然非常快,代码如下:

>>> [i.strip() for i in s.split('\n\t') if not i.isspace()]
['Current Weather', '12:36 AM', '22°', 'C', 'RealFeel®', '20°', 'Mostly clear']

基准:

>>> timeit.timeit(r"re.split(r'[\n\t]+', s)",r"""
import re
s = 'Current Weather\n\t\n\n\t\t12:36 AM\n\t\n\n\n\n\t\t\t22°\n\t\t\n\n\t\t\t\tC\n\t\t\t\n\n\n\t\tRealFeel®\n\t\t20°\n\t\n\n\t\tMostly clear'
""")
2.8587728
timeit.timeit(r"[i.strip() for i in s.split('\n\t') if not i.isspace()]",r"""import re

s = 'Current Weather\n\t\n\n\t\t12:36 AM\n\t\n\n\n\n\t\t\t22°\n\t\t\n\n\t\t\t\tC\n\t\t\t\n\n\n\t\tRealFeel®\n\t\t20°\n\t\n\n\t\tMostly clear'
""")
1.8853902

您可以使用^{}

import re

s = 'Current Weather\n\t\n.....t\tMostly clear'
re.split(r'[\n\t]+', s)

输出:

['Current Weather', '12:36 AM', '22°', 'C', 'RealFeel®', '20°', 'Mostly clear']

相关问题 更多 >