gpt4 book ai didi

python - 仅从列表中提取整数(不是 float )

转载 作者:行者123 更新时间:2023-11-28 21:48:02 24 4
gpt4 key购买 nike

我遇到了以下问题:

我有一个字符串,其中包含整数和 float 。我无法仅提取整数(不是 float !)。

我有什么(它是一个字符串):

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])

  1. .partition所有读者(包括您 future 的自己)都清楚您只看 1 个拆分。 (当然,您可以使用 split(delimiter, maxsplit) 的 2 个参数形式,但我认为这对于单个拆分不太清楚...)
  2. 测试成功的分区更容易,因为分区总是 产生一个三元素元组,你只需要测试元素tuple[1] 的真实性。 .
  3. 您可以安全地使用.partion在形式为 lh,delimiter,rh=string.partion('delimiter') 的元组赋值中其中 lh, rh=string.split('delimiter')将产生 ValueError如果找不到分隔符。
  4. 由于结果元组中包含定界符,因此可以更轻松地使用 ''.join(tuple_from_partion) 重新组合原始字符串。对比split由于 split 中的分隔符丢失了。
  5. 为什么不呢?

关于python - 仅从列表中提取整数(不是 float ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com