我必须检查用双字节字符编码的日语字符串(当然,这些文件不是Unicode中的,我必须将它们保存在Shift-JIS中)。其中许多字符串包含的数字也是双字节字符(123456789),而不是标准的单字节数字(0-9)。因此,通常搜索数字的方法不起作用(例如,在regex中使用0-9或\d )。
我发现让它工作的唯一方法是创建一个元组并在字符串中对元组进行迭代以查找匹配,但是有更有效的方法吗?
这是我在搜索双字节数时得到的输出的一个例子:
>>> 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任何建议都将不胜感激!
发布于 2018-05-23 03:22:01
在面对日文两字节字符时,我遇到了类似的问题,我发现一种相对简单的处理字符的方法是使用简单的Unicode数字来转换它们(至少对于处理它们,如果您想保持文档的原样的话):
ord("2")会回来
65298它与单字节字符2相距65248点。因此,可以使用以下方法完成转换:
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)添加相同的内容。
https://stackoverflow.com/questions/25801215
复制相似问题