将字符串转换为ASCII码
我需要把字符串转换成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])]
但还是不行。
顺便问一下,我有个长期困惑:我总是在处理行列表中的行(或者列表中的键),我从列表中得到的这一行,是字符串吗?还是我需要先把这一行转换成字符串?
谢谢
补充:更大块的代码:
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):.............
2 个回答
1
根据错误信息,我猜 l1
不是一个列表,而是一个字符串。在这个表达式中,你只是在用 l1[i]
进行索引操作。
1
如果能看到更多的代码,就更容易理解发生了什么。这个问题是在一个循环里吗?也就是说,有一个变量i在不断变化?不管怎样,唯一的索引操作是l1[i],所以问题在于你的i的值超过了l1的长度。另外,确保l1确实是一个列表,而不是一个字符串。string index out of range
这个错误听起来像是你在处理一个字符串。