我正在編寫一個Python腳本以從文件讀取Unicode字符並將它們插入到數據庫中。我只能插入每個字符串的30個字節。 在插入數據庫之前,如何計算字符串的大小(以字節爲單位)?計算python中的Unicode字符的字節數
0
A
回答
1
假設您正在將文件中的Unicode字符讀入名爲byteString
的變量中。如果你需要知道的字節數(文件大小),然後就打電話
bytes_count = os.path.getsize(filename)
unicode_string = byteString.decode("utf-8")
print len(unicode_string)
4
:然後你就可以執行以下操作。
如果你想找出一個Unicode字符可以有多少字節需要那就要看字符編碼:
>>> print(u"\N{EURO SIGN}")
€
>>> u"\N{EURO SIGN}".encode('utf-8') # 3 bytes
'\xe2\x82\xac'
>>> u"\N{EURO SIGN}".encode('cp1252') # 1 byte
'\x80'
>>> u"\N{EURO SIGN}".encode('utf-16le') # 2 bytes
'\xac '
要找出多少Unicode字符的文件包含,你不需要一次讀取內存中的整個文件(如果它是一個大文件):
with open(filename, encoding=character_encoding) as file:
unicode_character_count = sum(len(line) for line in file)
如果你ar e在Python 2上,然後在頂部添加from io import open
。
對於相同的人類可讀的文本可以取決於Unicode的正常化(不同的環境可能會使用不同的設置)的確切計數:
>>> import unicodedata
>>> print(u"\u212b")
Å
>>> unicodedata.normalize("NFD", u"\u212b") # 2 Unicode codepoints
u'A\u030a'
>>> unicodedata.normalize("NFC", u"\u212b") # 1 Unicode codepoint
u'\xc5'
>>> unicodedata.normalize("NFKD", u"\u212b") # 2 Unicode codepoints
u'A\u030a'
>>> unicodedata.normalize("NFKC", u"\u212b") # 1 Unicode codepoint
u'\xc5'
如示例所示,一個字符(A)可以用幾個Unicode代碼點表示。
要找出多少用戶感知的字符在文件中,你可以使用\X
正則表達式(伯爵伸出素羣):
import regex # $ pip install regex
with open(filename, encoding=character_encoding) as file:
character_count = sum(len(regex.findall(r'\X', line)) for line in file)
例子:
>>> import regex
>>> char = u'A\u030a'
>>> print(char)
Å
>>> len(char)
2
>>> regex.findall(r'\X', char)
['Å']
>>> len(regex.findall(r'\X', char))
1
+1
這應該是被接受的答案。 –
相關問題
- 1. Python的unicode字符串和字節
- 2. 計算ASCII和Unicode混合字符串中的字符數
- 3. 如何計算unicode字符超過1個字節的字符串長度?
- 4. Python - 計算文件中的字符數
- 5. 計算字符串中的字符數
- 6. __str__中的Python unicode字符
- 7. 計算MB的字節數
- 8. Python:計算字符串中給定字符的出現次數
- 9. 如何計算Python字符串中每個字符的數量?
- 10. Unicode字符串爲Unicode字符,Python 3
- 11. 有誰知道如何計算字符串中的字節數?
- 12. unicode字節中的特殊字符比iso字節長嗎?
- 13. 拆分字符串,unicode,unicode,python中的字符串
- 14. 計算plsql中字符串的字數
- 15. 計算字符串中的字數?
- 16. 計算數組中的字母字符?
- 17. Javascript計算字符串中的數字
- 18. 如何計算python中的字符串中的字符匹配?
- 19. 計算列表中的字符串中的字符,Python
- 20. python的字符串是unicode字符
- 21. Python-計算數據幀中每個字符串的數字字符總和
- 22. Python中,字符串,Unicode字符
- 23. 計算字節
- 24. Python 3中的Unicode字符與Python 2
- 25. Unicode字符串中的奇數字符
- 26. 字符串python中的字母計數
- 27. Python - pyparsing unicode字符
- 28. Unicode數字的字符類
- 29. Python:解析JSON字符串時處理破解的unicode字節
- 30. 計算字符數組中的一行中的字符數
'uniChars'是誤導(你想在'bytes'對象上調用'.decode()';你不應該在Unicode文本中調用它)。您可能會改爲'bytestring'。 – jfs