我需要将字符串转换为ASCII码。我正在使用python。 我做了如下:
b1=[ord(x) for x in l1[i]]
这里l1是一个行列表,l1 [i]是l1
的第i行但我收到的错误如下:
Traceback (most recent call last):
File "./fastq_phred_filter.py", line 24, in ?
b1=[ord(x) for x in str(l1[i])]
IndexError: string index out of range
我试过
b1=[ord(x) for x in str(l1[i])]
但仍然无效。
顺便说一下,我有一个很长时间的问题:我总是处理行列表中的行(或列表中的键),是我从列表中获取的行,一个字符串?或者我需要先将行转换为字符串吗?THX
编辑:更大的代码块:
l1= commands.getoutput('zcat '+fastqfile1)
l2= commands.getoutput('zcat '+fastqfile2)
f1=[]
f2=[]
for i in range(0,len(l1)):
if i % 4 == 3:
b1=[ord(x) for x in l1[i]]
ave1=sum(b1)/float(len(l1[i]))
b2=[ord(x) for x in str(l2[i])]
ave2=sum(b2)/float(len(l2[i]))
if (ave1 >= 20 and ave2>= 20):.............
答案 0 :(得分:1)
我将根据错误消息猜测l1
不是列表而是字符串。 l1[i]
是您在表达式中唯一的索引。
答案 1 :(得分:1)
通过更大的代码块可以更容易地看到正在发生的事情。这是在循环中以i作为循环索引吗?在任何情况下,唯一的索引发生在l1 [i],所以发生的是你的i大于l1的长度。另外,确保l1实际上是一个列表而不是字符串。 string index out of range
听起来好像是一个字符串。