【问题标题】:Getting len(a) of a list a imported from a file in Python 2.7获取从 Python 2.7 中的文件导入的列表的 len(a)
【发布时间】:2015-07-31 06:19:12
【问题描述】:

这应该可以正常工作。不过,我不明白为什么我会得到这个结果。我有一个程序,它打开一个文本文件。

file2 = open('file.txt','r')

文本文件包含 5 行。要将它们放入列表中,我会这样做:

data2 = file2.readlines()

然后,我可以通过这样做来创建一个包含第三行的变量:

var = data2[2]

文本文件的第三行包含一个列表,数字从 1 到 12,每一个都是一个单独的字符串。

['1','2','3','4','5','6','7','8','9','10','11','12']

最后,我打印列表的长度,

print len(var)

我得到了 53,而不是 12。我什至尝试过:

print len(data2[2])

这显然不起作用。有什么解释吗?

【问题讨论】:

  • 试试','.split(data2[2])(或任何你需要的分隔符)
  • 嗯.. 好像给了我 53,还是...
  • 应该很容易解析但你没有给出任何细节
  • 其实我没看错。我将第三行改为 1,2,3,4,5,6,7,8,9,10,11,12。然后我就照你说的做了。效果很好。
  • 我被 .split().join() 弄糊涂了一秒钟并打错了字。您需要在字符串上调用 .split() 并将其传递给分隔符。

标签: python-2.7


【解决方案1】:

data2[2] 是所提供示例中的字符串。它有53个字符。您需要通过某种字符串操作/解析将其转换为数组。

【讨论】:

  • 哦,我明白了。那就是问题所在。我应该意识到,这是因为我从另一个列表中获取了它。感谢您的回答。
【解决方案2】:

类似:

>>> line = "['1','2','3','4','5','6','7','8','9','10','11','12'] "
>>> len(line)
53
>>> line = line.strip()
>>> line = line.replace('[','')
>>> line = line.replace(']','')
>>> line = line.replace("'","")
>>> line
'1,2,3,4,5,6,7,8,9,10,11,12'
>>> nums = [int(s) for s in line.split(',')]
>>> nums
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> len(nums)
12

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2019-02-18
    • 2013-02-04
    相关资源
    最近更新 更多