python - 如何在Python中用前面的数字分割utf-8字符串?

标签 python string utf-8 split mojibake

我得到了一个原始的 utf-8 字符串:

u'1\u670d-\u82f1\u96c4\u96c6\u7ed3'

我将它转换为字符串

s = str(u'1\u670d-\u82f1\u96c4\u96c6\u7ed3'.encode('utf8'))
print s
'1\xe6\x9c\x8d-\xe8\x8b\xb1\xe9\x9b\x84\xe9\x9b\x86\xe7\xbb\x93'    

我想将数字 1 与其余字符串分开。

然后我尝试了:

s.split('\\')
['1\xe6\x9c\x8d-\xe8\x8b\xb1\xe9\x9b\x84\xe9\x9b\x86\xe7\xbb\x93']

s.split('\\x')
['1\xe6\x9c\x8d-\xe8\x8b\xb1\xe9\x9b\x84\xe9\x9b\x86\xe7\xbb\x93']

不是我想象的那样。

我终于灵光一闪,我做到了:

s.split('\xe6')
['1', '\x9c\x8d-\xe8\x8b\xb1\xe9\x9b\x84\xe9\x9b\x86\xe7\xbb\x93']

但问题是,我无法确保其他此类组合中的 utf-8 代码会以 '\xe6' 开头,所以我需要一种方法来区分具有任意 utf-8 代码的数字,然后将它们分开.

可以这样做吗?

最佳答案

如果它始终是一位数字,则只需索引第一项:

digit = s[0]

否则,您可以使用正则表达式来扫描它:

number = re.match(r'^\d+', s).group(0)

关于python - 如何在Python中用前面的数字分割utf-8字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336654/

相关文章:

python - 字符串中的引号

python - 嵌套字典减法

c++ - 如何在 C++ 中进行快速字符串连接

c++ - 输出 UTF-8 (u8) std::string

c++ - 在 Windows 中使用 UTF8 字符串打开文件名

python - Cython:构建扩展时出错:需要 Microsoft Visual C++ 14.0 或更高版本

python - 在 Python 中读取 xml 文件

java - 创建数组的数组列表

python - 不能使用\s 作为转义字符?

c - 如何在 OSX 上的 C 程序中处理(推测的)UTF-8 字符串