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第三方库


热门话题
java在Spring Boot中从CrudePository访问表的几列   biginteger如何将Java long转换为*无符号*baseX字符串(以及返回)?   NetBeans“方法”颜色的java深色主题不起作用   位操作如何在位集JAVA中左右移动位?   java如何在Spring Boot中调用函数后释放所有缓存数据   java如何在IntelliJ中调试子进程?   使用Jersey API处理java文件上传和缓冲内部   java如何在安卓上显示通知?   java如何使用mybatis 3传递动态字段和值   java第三方API在多模块Maven项目中看不到类   如何使用java在SQLServer2005中存储日期   java确实需要接口指针来提供多个版本的JNI函数表吗   java我的希伯来语文本在iText中是左对齐的   java在清单的java选项中配置密钥库。yml在铸造PCF中的应用