gpt4 book ai didi

Python - 错误的编码,正则表达式

转载 作者:行者123 更新时间:2023-11-28 18:30:58 25 4
gpt4 key购买 nike

我有一个波兰语文本,我想在其中过滤掉非波兰语字母,但问题是波兰语特定字母消失了

# coding: utf-8
import re

_NOT_LETTERS = re.compile('[^a-ząćęłóńśżź]+')

text = u'dzień dobry i wszystkiego najlepszego życzę'

data = _NOT_LETTERS.sub(' ', text)

print data

结果是

 dzie dobry i wszystkiego najlepszego ycz 

而不是预期的

dzień dobry i wszystkiego najlepszego życzę

我该如何解决这个问题?我从第三方库接收可变文本

最佳答案

重音字母不在 ascii 范围内,以 UTF-8 编码时需要几个字节,例如字符:

U+0144  ń       LATIN SMALL LETTER N WITH ACUTE

编码为两个字节:c5 84

当你写一个字符串而不指定它是一个包含多字节字符的字符串时,每个单字节被视为一个字符(字符\xc5和字符\x84 但不是无法识别的字符 ń (U+0144)。)

在 Python 2.7 中,您需要指定您的字符串是 unicode 字符串,否则所有多字节字符都将被视为单字节。你可以自己测试它:

>>> text = u'dzień'
>>> [c for c in text]
[u'd', u'z', u'i', u'e', u'\u0144']

>>> text = 'dzień'
>>> [c for c in text]
['d', 'z', 'i', 'e', '\xc5', '\x84']

未找到字符,因为您的模式不在像您的主题字符串那样的 unicode 字符串中。你需要写:

re.compile(u'[^a-ząćęłóńśżź]+')

关于Python - 错误的编码,正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com