首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测双字节数

如何检测双字节数
EN

Stack Overflow用户
提问于 2014-09-12 05:15:15
回答 1查看 3.4K关注 0票数 2

我必须检查用双字节字符编码的日语字符串(当然,这些文件不是Unicode中的,我必须将它们保存在Shift-JIS中)。其中许多字符串包含的数字也是双字节字符(123456789),而不是标准的单字节数字(0-9)。因此,通常搜索数字的方法不起作用(例如,在regex中使用0-9或\d )。

我发现让它工作的唯一方法是创建一个元组并在字符串中对元组进行迭代以查找匹配,但是有更有效的方法吗?

这是我在搜索双字节数时得到的输出的一个例子:

代码语言:javascript
复制
>>> s = "234"  # "2" is a double-byte integer
>>> if u"2" in s:
      print "y"

>>> if u"2" in s:
      print "y"

    y
>>> print s[0]

>>> print s[:2]
    2
>>> print s[:3]
    23

任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2018-05-23 03:22:01

在面对日文两字节字符时,我遇到了类似的问题,我发现一种相对简单的处理字符的方法是使用简单的Unicode数字来转换它们(至少对于处理它们,如果您想保持文档的原样的话):

代码语言:javascript
复制
ord("2")

会回来

代码语言:javascript
复制
65298

它与单字节字符2相距65248点。因此,可以使用以下方法完成转换:

代码语言:javascript
复制
def convert_two_byte_numbers(character: str):
    if ord(character) in range(65296, 65306):
        return chr(ord(character) - 65248)
    else: 
        return character

如果像我一样,还需要转换两个字节的字母,那么为范围(65313, 65339)(65345, 65371)添加相同的内容。

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

https://stackoverflow.com/questions/25801215

复制
相关文章

相似问题

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