字符串中的ascii字符 - 如何删除它们

时间:2015-01-29 14:21:52

标签: python string cryptography ascii non-ascii-characters

我正在尝试加密文本,但我遇到以下问题:

我有一个巨大的字符串(大约500多个页面连接在一起),其中包含以下形式的字符:

÷ΆώϋⁿΪⁿ÷ό±όⁿΈϊ÷ωΪⁿάⁿ÷ώ÷Ύ≤÷ώ

我需要从字符串中删除这些字符,只是我不知道如何。 假设这个大字符串被称为data。 我正在尝试以下方法:

for i in data:
   if i not in string.ascii_letters and i not in n and i not in string.punctuation and i !=' ':
      data.replace(i,"")

但是,它不起作用,因为之后我使用以下命令:

q=''
for i in data:
    if i not in string.ascii_letters and i not in n and i not in string.punctuation and i !=' ':
        q=q+i
print q

再次打印÷ΆώϋⁿΪⁿ÷ό±όⁿΈϊ÷ωΪⁿάⁿ÷ώ÷Ύ≤÷ώ

2 个答案:

答案 0 :(得分:1)

  data.replace(i,"")

replace没有修改data,它会创建一个新的字符串实例并将其返回。尝试将结果分配回data

  data = data.replace(i,"")

答案 1 :(得分:0)

以下是将删除非ascii的完整代码:

# -*- coding: UTF-8 -*-
data = 'poqwe÷ΆώϋⁿΪⁿbar÷ό±όⁿΈϊfoo÷ωΪⁿάⁿ÷ώ÷Ύ≤÷ώ42'
def remove_non_ascii(data):
    return ''.join([i if ord(i) < 128 else '' for i in data])
data = remove_non_ascii(data)
print data

使用简单的for循环,它看起来像:

# -*- coding: UTF-8 -*-
data = 'poqwe÷ΆώϋⁿΪⁿbar÷ό±όⁿΈϊfoo÷ωΪⁿάⁿ÷ώ÷Ύ≤÷ώ42'
def remove_non_ascii(data):
    foo = ''
    for i in data:
        if (ord(i) < 128):
            foo += i
        else:
            foo += '' # whatever you wanna put instead of non-ascii
    return foo 
data = remove_non_ascii(data)
print data