首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"ascii_letters“改进非字母符号的过滤

使用"ascii_letters“改进非字母符号的过滤
EN

Stack Overflow用户
提问于 2020-11-02 11:45:48
回答 2查看 25关注 0票数 0

我从字符串开头删除所有非字母符号,如下所示:

代码语言:javascript
复制
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,即没有删除符号— — .怎么修呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-02 11:56:32

可以使用正则表达式将字符串开头的非字母(拉丁文/ASCII)字母链替换为空字符串:

代码语言:javascript
复制
import re

mystring = '— — This is the description of'
trimmed = re.sub(r"^[^a-zA-Z]*", "", mystring)
票数 1
EN

Stack Overflow用户

发布于 2020-11-02 12:11:57

您的non_letter定义只包含非字母的ASCII字符。(从0到127循环,选择所有不是字母的字符。)但是要删除的字符不是ASCII字符;它们的代码点在127以上。

如果您真的想只针对7位的ASCII范围,则预处理字符串以删除该范围之外的任何内容。

代码语言:javascript
复制
pure_ascii(inputstring):
    return ''.join(l for l in inputstring if ord(l) < 128)

更普遍的是,在这个千年中,可能会使用Unicode字符属性来真正针对您实际要针对的代码点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64644979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档