libguess的python包装器,用于确定字符串的字符编码的库。

python-libguess的Python项目详细描述


libguess允许找出某些文本的编码方式 给定的语言。这个库对于短文本字符串特别有用 它们本身不携带可靠的编码信息,比如id3标签 在MP3文件中。例如,我们可以在3中编码相同的日语字符串 不同的编码(utf-8、shift-jis、euc-jp)和libguess将 希望通过查看第一个 给定字符串的几个字节。

您还可以将其用作常规命令行程序,方法是 作为第一个参数的区域和之后可能的目标文件:

Usage: python -m guess REGION [INPUT_FILE]

If input file name is not given, this program reads from the standard input.

功能

确定编码(在字符串、区域中)

确定给定语言区域的字符串编码。

参数:
in_string–需要猜测编码的原始字节字符串。
region–猜测编码的REGION_*常量之一。
返回:
字符串值,指示给定区域或None中字符串参数的猜测编码(如果发生错误)。

作为一个使用示例,我们可以看到当给定日语时会发生什么 两种不同编码的文本:

>>> import guess
>>> guess.determine_encoding(u'\u3042'.encode('euc-jp'), guess.REGION_JP)
'EUC-JP'
>>> guess.determine_encoding(u'\u3042'.encode('utf-8'), guess.REGION_JP)
'UTF-8'

此函数的输出字符串可以直接给出 to iconv_open()c函数及其结果名称应为 与str.decode()函数的编码字符串兼容:

>>> encoded_value = u'\u3042'.encode('shift-jis')
>>> encoding = guess.determine_encoding(encoded_value, guess.REGION_JP)
>>> encoding
'SJIS'
>>> encoded_value.decode(encoding)
u'\u3042'

如果给定的区域名无效或基础 libguess_determine_encoding()调用因任何其他原因失败, 不返回任何值:

>>> encoding = guess.determine_encoding("asdf", "UNKNOWN")
>>> encoding is None
True

对区域名使用REGION_*常量。

验证utf8(在字符串中)

检查给定字符串是否为有效的utf-8字节序列。

参数:
in_string–要检查utf-8有效性的原始字节字符串。
返回值:
True如果给定的字符串是有效的utf-8字节序列,False否则。

这里包含这个函数是为了完整地使用libguess 接口。它给出了比utf-8更精确的结果。 例如glib中的函数。

>>> import guess
>>> guess.validate_utf8(u'\u3042'.encode('EUC-JP'))
False
>>> guess.validate_utf8(u'\u3042'.encode('UTF-8'))
True

地区名称

REGION_AR='阿拉伯语'
REGION_BL='波罗的海'
REGION_CN='中文'
REGION_GR='希腊语'
REGION_HW='希伯来语'
REGION_JP='日语'
REGION_KR='朝鲜语'
REGION_PL=“波兰语”
REGION_RU='俄语'
REGION_TR='土耳其语'
REGION_TW='台湾人'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?