首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串中不需要的字节

字符串中不需要的字节
EN

Stack Overflow用户
提问于 2018-07-10 10:34:07
回答 1查看 124关注 0票数 1

摘要:

我试着对文本进行预处理,然后做分类或主题建模.问题是在预处理的时候,有一些编码问题我无法解决,编码真的是个麻烦的话题。

描述:

给定的字符串从excel文件中提取,

代码语言:javascript
复制
s = "  GEÇİCİ  \n\t"

现在,当我试图对这个字符串应用一些替换和标记时,我会遇到一个问题,在这个字符串变成,

代码语言:javascript
复制
print(re.sub(r'[^a-zıöüşçğ.,\']', ' ', s.lower()))
# '  geçi ci     '

结果不应该这样分开,它破坏了我的标记化过程。然后我尝试了不考虑案件的方法,效果很好。

代码语言:javascript
复制
print(re.sub(r'[^a-zıöüşçğ.,\']', ' ', s, flags=re.I).lower())
# '  geçi̇ci̇    '

为了了解出了什么问题,我试着把原来的字符串编码成"utf-8",这很好,

代码语言:javascript
复制
print(s.encode("utf-8"))
# b'  GE\xc3\x87\xc4\xb0C\xc4\xb0  \n\t'

但是当我尝试在使用lower()后对其进行编码时,问题就在这里,

代码语言:javascript
复制
print(s.lower().encode("utf-8"))
# b'  ge\xc3\xa7i\xcc\x87ci\xcc\x87  \n\t'

与预期结果进行比较

代码语言:javascript
复制
print("geçici".encode("utf-8"))
# b'ge\xc3\xa7ici'

问题:

那两个b'\xcc\x87‘来自哪里?

我记得在C#中遇到过类似的问题。有一种像ToLowerInvariant这样的方法可以绕过这个问题。寻找这样的参数,我可以通过更低的,但什么也没有出现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 11:07:21

这两个b'\xcc\x87‘是较低的İ。如果你想摆脱它们,用它更新你的正则表达式:r'[^a-zıi̇öüşçğ.,\']'。i̇可能看起来像普通的较低的̇位--它不是(注意不在代码块中的双虚线模式)

这里有一张来自我的文本编辑器的不同变体的图片:无点的ı,无点的i̇和点,规则i

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

https://stackoverflow.com/questions/51263013

复制
相关文章

相似问题

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