[英]Extract only the integers from list (not the floats)
我遇到以下问题:
我有一个字符串,其中包含整数和浮点数。 我无法仅提取整数(不是浮点数!)。
我有(它是一个字符串):
f= "0:6.0 3:5.6 54:12.3 56:12.0"
结果应如何(不是字符串形式):
0,3,54,56
我在Google上搜索(并且出现了堆栈溢出),从而得出了以下解决方案:
[int(s) for s in f.split() if s.isdigit()]
这导致一个空列表。
其他解决方案如:
int(re.search(r'\d+', f).group())
导致“ 0整数”。 抱歉,我是新手,但我真的无法解决此问题。
您可以使用.partition(':') :
>>> s="0:6.0 3:5.6 54:12.3 56:12.0"
>>> [e.partition(':')[0] for e in s.split()]
['0', '3', '54', '56']
然后在这些字符串上调用int
:
>>> [int(e.partition(':')[0]) for e in s.split()]
[0, 3, 54, 56]
要么,
>>> map(int, (e.partition(':')[0] for e in s.split()))
[0, 3, 54, 56]
您可以使用相同的方法(稍有变化)来获取浮点数:
>>> map(float, (e.partition(':')[2] for e in s.split()))
[6.0, 5.6, 12.3, 12.0]
在评论中问的公平问题: 为什么要使用分区? 您可以使用int(split(“:”)[0])
.partition
,所有读者(包括您将来的自己)都可以清楚地看到,您只看1个拆分。 (当然,您可以使用split(delimiter, maxsplit)
的2个参数形式,但我认为对于单个split来说不太清楚...) tuple[1]
的真实性即可。 lh,delimiter,rh=string.partion('delimiter')
元组分配中安全地使用.partion
,其中lh, rh=string.split('delimiter')
如果找不到分隔符,则lh, rh=string.split('delimiter')
会产生ValueError
。 ''.join(tuple_from_partion)
VS split
由于在分隔符split
丢失。 如何使用以下正则表达式:
import re
f = "0:6.0 3:5.6 54:12.3 56:12.0"
answer = [int(x) for x in re.findall(r'\d{1,2}(?=:)', f)]
print(answer)
产量
[0, 3, 54, 56]
您也可以使用map
而不是列表理解来实现相同的结果(如@dawg的答案):
answer = map(int, re.findall(r'\d{1,2}(?=:)', f))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.