Python - 无法识别 Ascii 字符值 2



我的代码的目的是从位于control-c(ASCII值3)和control-b(ASCII值2)之间的文件中删除所有文本。当我的代码看到值3但从未看到值2并且应该看到值时,它会进入第一个if语句。循环只是重复,直到到达文件的末尾。我听说python有ASCII问题,但不明白为什么没有看到2。

代码:

i = 1
j=1
while i< size:
    char1 = input[i:i+1]
    num = ord(char1)
    if num == 3:
        for j in range (i,size):
            char2 = input[j:j+1]
            num2 = ord(char2)
            if num == 2:
                print "we found a 2"
        i=j
    else:
        result=char1
        fresult = fresult+result
        i=i+1
print fresult

我认为这行代码:

if num == 2:

应该测试num2而不是num

我会对您的代码提出一些建议,与@JohnGordon在他的回答中指出的错误分开。

  1. 不要调用字符串input-input是Python 2和Python 3中内置函数的名称。

  2. 当您只想要列表的第5个CCD_元素时,不需要使用切片。您可以使用my_list[i] 而不是my_list[i:i+1]

  3. 请参阅@John Gordon关于if num == 2的回答——您正在比较错误的变量(这是死代码,因为num永远不能同时为2和3)。

以下是我使用的基于您已有内容的测试代码。

test_str = 'abcx03defx02ghi'
i = 0
j = 0
size = len(test_str)
result = ''
while i < size:
    char1 = test_str[i]
    num1 = ord(char1)
    if num1 == 3:
        for j in xrange(i, size):
            char2 = test_str[j]
            num2 = ord(char2)
            if num2 == 2:
                print "we found a 2"
                j += 1
                break
        i = j
    else:
        result += char1
        i += 1
print result

哪个输出:

we found a 2
abcghi

最新更新