我从字符串开头删除所有非字母符号,如下所示:
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)在我需要的大多数情况下,它工作得很好。但是,在上面所示的示例中,输出是— — This is the description of,即没有删除符号— — .怎么修呢?
发布于 2020-11-02 11:56:32
可以使用正则表达式将字符串开头的非字母(拉丁文/ASCII)字母链替换为空字符串:
import re
mystring = '— — This is the description of'
trimmed = re.sub(r"^[^a-zA-Z]*", "", mystring)发布于 2020-11-02 12:11:57
您的non_letter定义只包含非字母的ASCII字符。(从0到127循环,选择所有不是字母的字符。)但是要删除的字符不是ASCII字符;它们的代码点在127以上。
如果您真的想只针对7位的ASCII范围,则预处理字符串以删除该范围之外的任何内容。
pure_ascii(inputstring):
return ''.join(l for l in inputstring if ord(l) < 128)更普遍的是,在这个千年中,可能会使用Unicode字符属性来真正针对您实际要针对的代码点。
https://stackoverflow.com/questions/64644979
复制相似问题