2024-06-28 19:05:25 发布
网友
我使用内置的拆分功能,但遇到了一个问题:
>>> data = "test, ąśżźć, test2" >>> splitted_data = data.split(",") >>> print splitted_data ['test', ' \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87', ' test2']
为什么会这样?我该怎么做才能防止这种情况发生?
Python2.7.1
您正在查看splitted_data的内部表示
splitted_data
data = "test, åäö, test2" data 'test, \xe5\xe4\xf6, test2' data.split()[1] '\xe5\xe4\xf6,' print data.split()[1] åäö,
这纯粹是从str.__repr__(对字符串调用repr())获得的输出。\xc4等只是实际的存储方式。当你打印出来的时候还是一样的:
str.__repr__
repr()
\xc4
>>> data = "test, ąśżźć, test2" >>> data 'test, \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87, test2' >>> print data test, ąśżźć, test2
list.__str__和list.__repr__使用字符串的表示形式,但如果访问其中的项,则仍然正确:
list.__str__
list.__repr__
>>> splitted_data = data.split(",") >>> splitted_data ['test', ' \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87', ' test2'] >>> print splitted_data[1] ąśżźć
虽然您的代码片段可以工作(转义只是repr的工作方式),但不应该将bytestrings视为文本。先解码,后操作。
repr
data = u"test, ąśżźć, test2" # or "test, ąśżźć, test2".decode('utf-8') split_data = data.split(u",")
您正在查看
splitted_data
的内部表示这纯粹是从
str.__repr__
(对字符串调用repr()
)获得的输出。\xc4
等只是实际的存储方式。当你打印出来的时候还是一样的:list.__str__
和list.__repr__
使用字符串的表示形式,但如果访问其中的项,则仍然正确:虽然您的代码片段可以工作(转义只是
repr
的工作方式),但不应该将bytestrings视为文本。先解码,后操作。相关问题 更多 >
编程相关推荐