从字符串Python中删除nonascii和特殊字符

2024-10-04 05:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要代码方面的帮助 我想从字符串中删除非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()

Tags: 字符串代码restringascii情况rn字符
2条回答

您可以尝试使用简单的正则表达式和.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

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

# 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)

相关问题 更多 >