将字符串转换为ASCII码

-1 投票
2 回答
952 浏览
提问于 2025-04-17 00:16

我需要把字符串转换成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这个错误听起来像是你在处理一个字符串。

撰写回答