【问题标题】:Python make a list of ints and floats on the same linePython 在同一行创建一个整数和浮点数列表
【发布时间】:2020-12-27 03:50:22
【问题描述】:

我正在构建一个 python 程序,该程序需要在同一行获取整数和浮点值并将其存储为变量,并过滤掉所有不超过 6 个字符的内容。例如:

'TEST
3E 37 2810
173819 TEST 12.45
173829 TEST 3.74
271838 TEST 3.54
373828 TEST 2.37
2717 TEST 4.31
TEST 2.99'

我希望程序只提取这些值:[173819, 1.45], [173829, 3.74], [271838, 3.54], [373828, 2.37] 并将它们添加到列表中。

我尝试使用此代码获取长度为 5-7 个字符的值,但这并没有获取同一行的浮点值并将它们添加到列表中:

numbers = [int(s) for s in Text.split() if s.isdigit()]
    for i in range(len(numbers)):
                    getvalue = str(numbers[i])
                    length = (len(getvalue))
                    if length == 5:
                        values.append(numbers[i])
                    elif length == 6:
                        values.append(numbers[i])
                    elif length == 7:
                        values.append(numbers[i])
                print(values)

提前感谢您的帮助。

【问题讨论】:

  • 理想情况下,您应该尝试在您的问题中解决问题。这将提高您作为开发人员的技能并增加您获得帮助的机会。
  • 这能回答你的问题吗? Python Parse text
  • 为什么要检查 5-7 个字符的长度?您问题的第一部分暗示您对整数有 6 位的行感兴趣,对吗?

标签: python python-3.x list integer


【解决方案1】:

我会这样做: 给定:

inData = 'TEST \n3E 37 2810\n173819 TEST 12.45\n173829 TEST 3.74\n271838 TEST 3.54\n373828 TEST 2.37\n2717 TEST 4.31\nTEST 2.99'

然后:

inlines = inData.split('\n')
for l in inlines:
    j = l.split(' ')
    if len(j) >= 3 and and len(j[0])>= 6:
        print(f"Integer: {int(j[0])}\tFloat: {float(j[2])}")

产量:

Integer: 173819 Float: 12.45
Integer: 173829 Float: 3.74
Integer: 271838 Float: 3.54
Integer: 373828 Float: 2.37

【讨论】:

  • 感谢您的回答!这个问题真的帮了我很多!
  • 有没有办法让这些值自动变成字典?
  • 确定要使用什么作为键?什么是价值
  • 此代码是否也适用于没有 \n 的多行字符串?
  • 请务必跳过根据 '\n' 拆分输入的步骤。
猜你喜欢
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多