Python 使用“改进非字母符号的过滤”;ascii字母;
我正在删除字符串开头的所有非字母符号,如下所示:Python 使用“改进非字母符号的过滤”;ascii字母;,python,string,Python,String,我正在删除字符串开头的所有非字母符号,如下所示: from string import ascii_letters non_letter = ''.join(set(map(chr, range(128))) - set(ascii_letters)) mystring = '— — This is the description of' mystring.lstrip(non_letter) 它在我需要的大多数情况下都能正常工作。然而,在上面所示的示例中,输出是-,这是对的描述,即符号-
from string import ascii_letters
non_letter = ''.join(set(map(chr, range(128))) - set(ascii_letters))
mystring = '— — This is the description of'
mystring.lstrip(non_letter)
它在我需要的大多数情况下都能正常工作。然而,在上面所示的示例中,输出是
-,这是对
的描述,即符号-
。如何修复?您可以使用正则表达式将字符串开头的非字母(拉丁/ASCII)字母链替换为空字符串:
import re
mystring = '— — This is the description of'
trimmed = re.sub(r"^[^a-zA-Z]*", "", mystring)
可以使用正则表达式将字符串开头的非字母(拉丁/ASCII)字母链替换为空字符串:
import re
mystring = '— — This is the description of'
trimmed = re.sub(r"^[^a-zA-Z]*", "", mystring)
您的
非字母定义仅包含非字母的ASCII字符。(从0到127循环并选择所有非字母字符。)但要删除的字符不是ASCII字符;他们的代码点高于127
如果您确实希望只针对7位ASCII范围,请预处理字符串以删除该范围之外的任何内容
pure\u ascii(输入字符串):
返回“”。如果ord(l)<128,则在inputstring中加入(l代表l)
更一般地说,在这个千年中,可能会使用Unicode字符属性来真正针对您实际想要针对的代码点。您的非字母定义只包含非字母的ASCII字符。(从0到127循环并选择所有非字母字符。)但要删除的字符不是ASCII字符;他们的代码点高于127
如果您确实希望只针对7位ASCII范围,请预处理字符串以删除该范围之外的任何内容
pure\u ascii(输入字符串):
返回“”。如果ord(l)<128,则在inputstring中加入(l代表l)
更一般地说,在这个千年中,可能会使用Unicode字符属性来真正针对您实际想要针对的代码点。请显示打印(非字母)
@ack的输出:我认为它是以某种方式编码的。无论如何,我得到了这个08(2 |#!,$*.&%/}:4“=9;75+~)-63”
。请显示print(非字母)
@ack:我认为它是以某种方式编码的。无论如何,我得到了这个08(2 |#!,$*.&%/:4”=9;75+~)-63?
。