在Python中实现大数据集导致“字符串索引超出范围”错误?

2024-05-23 17:51:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现以下代码:

with open('datapath') as f:
   k_mers = f.read()

k_mers_parsed = []

for i in k_mers.split('\n'):
   k_mers_parsed.append(i)
genome = k_mers_parsed[0]
for i in range(1,len(k_mers_parsed)):
   genome = genome + k_mers_parsed[i][-1]

with open('filepath', 'w') as out:
out.write(genome)

读取一个包含大约4行代码的文件非常有效,我可以快速生成所需的解决方案集。你知道吗

然而,每当我尝试导入一个大规模的数据集,比如说,1000行数据集时,就会出现以下错误:

genome = genome + k_mers_parsed[i][-1]
IndexError: string index out of range

造成这种情况的根本原因是什么?我该如何补救?你知道吗


Tags: 数据代码inforreadgenomeaswith
2条回答

文件中可能有一个空行。 也可以尝试以下方法:

with open('datapath') as f:
    genome = [l[-1] for l in f if l]

问题不是因为读了1000行,而是因为有些行没有数据

即:

st="""
    ...: 
    ...: 
    ...: asd
    ...: """

print st
'\n\n\nasd\n'

lst=st.split("\n")

print lst
['', '', '', 'asd', '']

print lst[1][-1]
                                     -
IndexError                                Traceback (most recent call last)
<ipython-input-65-82ba25ef865c> in <module>()
  > 1 print lst[1][-1]

IndexError: string index out of range 

我解决这个问题的方法是三元表达式

代码:

print lst[1][-1] if len(lst[1])>0 else "None"

在您的情况下:

genome = genome + k_mers_parsed[i][-1] if len(k_mers_parsed[i])>0 else " "

相关问题 更多 >