Des*_*uds 3 python string list elements subtraction
我有这个字符串列表:
x = ['+27', '05', '1995 F']
Run Code Online (Sandbox Code Playgroud)
我想要一些代码输出:
['+', '27', '05', '1995', 'F']
Run Code Online (Sandbox Code Playgroud)
我正在考虑.split()
在最后一个元素上使用该函数,所以我编写了这段代码:
x=['+27', '05', '1995 F']
x[2]=x[2].split()
Run Code Online (Sandbox Code Playgroud)
这输出:
['+27', '05', ['1995', 'F']]
Run Code Online (Sandbox Code Playgroud)
如何确保第二个元素不是子列表,而是输出这个?
['+27', '05','1995','F']
Run Code Online (Sandbox Code Playgroud)
我应该使用insert
和del
?
我用第一个元素写了这个insert
和del
:
x=x.split("/")
x.insert(0,x[0][0])
x.insert(1,x[1][1:])
del x[2]
Run Code Online (Sandbox Code Playgroud)
这输出:
['+', '27', '05', '1995 F']
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
下面是使用的解决方案itertools.groupby()
,并str.isdigit()
在列表理解:
>>> from itertools import groupby
>>> x=['+27', '05', '1995 F']
>>> [''.join(g).strip() for s in x for k, g in groupby(s, str.isdigit)]
['+', '27', '05', '1995', 'F']
Run Code Online (Sandbox Code Playgroud)
这是通过将每个字符串x
分成字符组来实现的,这些字符串是基于它们是否为数字,然后将这些组连接回字符串,最后从结果字符串中删除空格.
正如您所看到的,与目前为止提供的其他解决方案不同,它将"+27"分为"+"和"27"(正如您的问题所说).
归档时间: |
|
查看次数: |
179 次 |
最近记录: |