从字符串 Python 中删除非 ascii 和特殊字符

时间:2021-03-13 10:24:13

标签: python python-3.x

我需要代码方面的帮助 我想从字符串中删除非 ASCII 字符和特殊字符。

   s = "Bjørn 10.2.3"

而且我希望它能够在输出中删除特殊字符和非 ascii 字符。

就这样,

  >>> Bjrn 1023

当它只有非 ascii 或特殊字符时,我知道该怎么做.. 不知道两者都怎么做

到目前为止我所拥有的

对于特殊字符

s = re.sub("[\"\'.]", "", special_character_string)

对于非 Ascii

encode = non_ascii_string.encode("ascii", "ignore")
        
    s = encode.decode()

2 个答案:

答案 0 :(得分:0)

我的意思是这一切都取决于您要删除哪些字符,但更重要的是要关注算法。解决您的问题的一种方法是遍历字符串并通过将每个字符与有效字符列表进行比较来验证每个字母是否被视为“有效”。

# Make a list of all your valid letters
valids = ["a", "b", "c" ... ]

# Iterate for each character in your string
final_string = ""
original_string = "Bjørn 10.2.3"
for character in list(original_string):
    # If the character is not valid
    if character in valids:
        final_string += character

# Your final string contains only your valid characters
print(final_string)

答案 1 :(得分:0)

您可以尝试使用简单的 Regex 和 .replace() -

import re

my_string = "Bjørn 10.2.3"
new_string = re.sub('[^A-z0-9 -]', '', my_string).replace(" ", " ")
print (new_string)

输出:

Bjrn 1023