将字符串转换为ASCII码

时间:2011-08-24 14:35:43

标签: python string list 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])]

但仍然无效。

顺便说一下,我有一个很长时间的问题:我总是处理行列表中的行(或列表中的键),是我从列表中获取的行,一个字符串?或者我需要先将行转换为字符串吗?

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):.............

2 个答案:

答案 0 :(得分:1)

我将根据错误消息猜测l1不是列表而是字符串。 l1[i]是您在表达式中唯一的索引。

答案 1 :(得分:1)

通过更大的代码块可以更容易地看到正在发生的事情。这是在循环中以i作为循环索引吗?在任何情况下,唯一的索引发生在l1 [i],所以发生的是你的i大于l1的长度。另外,确保l1实际上是一个列表而不是字符串。 string index out of range听起来好像是一个字符串。