如何获得第 3 列的长度? Python

How to get the length of the column #3? Python

我对此非常陌生,老实说我不太了解。有人可以帮我创建一个代码来获取第 3 列的总和吗,如果这太傻了,抱歉,希望你能帮助我。谢谢

这是一个标签文件。

#打开文件(必须是.tab文件)

file = open("chromosome_length.tab")

#根据READ ME文件,17号染色​​体是线粒体染色体。

##打印第 17 行

lines_to_print = [16]

for index, line in enumerate(file):
  if ( index in lines_to_print):
    print("Mitochondrial chromosome:")
    print(line)

#染色体有多长?

with open("chromosome_length.tab") as f:
    lines = f.read().split('\n')

values = [int(i.split()[2]) for i in lines]
print(sum(values))

#错误:

Traceback (most recent call last):
  File "/Users/vc/Downloads/assig.py", line 19, in <module>
    values = [int(i.split()[2]) for i in lines]
  File "/Users/vc/Downloads/assig.py", line 19, in <listcomp>
    values = [int(i.split()[2]) for i in lines]
IndexError: list index out of range

Process finished with exit code 1

文件:

3   NC_001135   316620
4   NC_001136   1531933
5   NC_001137   576874

你可以这样做:

with open('chromosome_length.tab') as f:
    lines = f.read().split('\n')

values = [int(i.split()[2]) for i in lines if i]
print(sum(values))

解释:

以阅读模式打开文件chromosome_length.tab,阅读所有文本,将文本按换行符拆分(\n)
在这一点上,我们的 lines 列表中有这样的东西:

[
    "1 NC1234 1234",
    "2 NC4321 5678",
    ...
]

为了得到每一行的第 3 列,我们遍历 lines 中的每一行,用 space 分割该行,所以我们有 ["1", "NC1234", "1234"],得到第 3 列按 [2] 列并将其转换为 int.

因此,我们的 values 列表中包含所有值:[1234, 5678, ...]

最后,我们使用内置函数sum()values列表中的值求和并打印出来


更新: 问题出在列表末尾的空字符串 '' 中。为我们的 inline for 循环添加过滤器 if i 解决了这个问题。


希望对您有所帮助:)