Unicode 模式(Python) - IBM
文章推薦指數: 80 %
Python 從IBM SPSS Statistics 收到的字串會從UTF-8 轉換為Python Unicode ,即UTF-16。
... 下列範例示範部分此行為及 u() 函數的用法。
set unicode on ...
Unicode模式(Python)
當IBM®SPSS®Statistics處於Unicode模式時(由SET指令的UNICODE次指令控制),當透過spss模組提供的函數傳遞及接收字串時,會自動完成下列轉換:
Python從IBMSPSSStatistics收到的字串會從UTF-8轉換為PythonUnicode,即UTF-16。
從Python傳遞至IBMSPSSStatistics的字串會從UTF-16轉換為UTF-8。
附註:在OMS要求期間變更語言環境及/或Unicode設定可能會導致不正確地轉碼文字。
指令語法檔案
在Unicode模式下使用指令語法檔案時必須特別小心。
具體而言,指令語法檔中使用的Python字串文字需要明確表示為UTF-16字串。
最好使用spssaux模組(隨IBMSPSSStatistics-EssentialsforPython一起安裝)中的u()函數來完成此作業。
此函數具有下列行為:
如果IBMSPSSStatistics處於Unicode模式,則輸入字串會轉換為UTF-16。
如果IBMSPSSStatistics不是Unicode模式,則會傳回未變更的輸入字串。
附註:如果指令語法檔案中的字串文字僅由一般羅馬字元(7位元ascii)組成,則不需要u()函數。
下列範例示範部分此行為及u()函數的用法。
setunicodeonlocale=english.
BEGINPROGRAM.
importspss,spssaux
fromspssauximportu
literal="âbc"
try:
print"literalwithoutconversion:",literal
except:
print"can'tprintliteral"
try:
print"literalconvertedtoutf-16:",u(literal)
except:
print"can'tprintliteral"
ENDPROGRAM.
結果如下:
literalwithoutconversion:can'tprintliteral
literalconvertedtoutf-16:âbc
截斷Unicode字串
在Unicode模式下工作時,請使用spssaux模組(隨IBMSPSSStatistics-EssentialsforPython安裝)中的truncatestring函數,將字串正確地截斷為指定的字串長度上限(以位元組為單位)。
這對於截斷字串以用作IBMSPSSStatistics變數名稱(容許的長度上限為64個位元組)特別有用。
truncatestring函數採用兩個引數--要截斷的字串,以及位元組數上限,這是選用的,預設為64。
例如:
importspss,spssaux
newstring=spssaux.truncatestring(string,8)
上層主題:使用Python程式區塊
相關資訊
Python程式區塊的基本規格
巢狀程式區塊(Python)
延伸文章資訊
- 1Unicode 指南— Python 3.10.7 說明文件
Python 的字符串类型采用Unicode 标准来表示字符,使得Python 程序能够正常处理所有这些不同的字符。 ... \U 转义序列用法类似,但要用8 个十六进制数字,而不是4 个:.
- 2Python 字符串 - 菜鸟教程
Python 支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符% ...
- 3python unicodedata用法- 程式人生
UCD是Unicode字元資料庫(Unicode Character DataBase)的縮寫。 UCD由一些描述Unicode字元屬性和內部關係的純文字或html檔案組成。
- 4python中unicode编码转换为中文
unicode编码转换为中文有四种:1、使用unicode_escape 解码;2、使用encode()方法转换,再调用bytes.decode()转换为字符串形式;3、使用json.loads...
- 5PyTips 0x09 – Python 中Unicode 的正確用法 - 程式前沿
專案地址: 0x07 和0x08 分別介紹了Python 中的字串型別(str b'\xf0\x9f\x8c\x8e\xf0\x9f\x8c\x8f' ... PyTips 0x09 – Pyt...