[英]Split unicode string read from a file, by a unicode character
我正在嘗試用Unicode字符拆分Unicode字符串:“。” (U + 0964)
unicode字符串的示例為:
তার মধ্যে আশ্চর্য একটা মিল। ইস্টার্ন মেট্রোপলিটান বাইপাস। এ বার দিন এল। বদলে গিয়েছে অনেকটাই।
如果我從文件中讀取它,
f1 = codecs.open('tmp1.txt',encoding='utf8',mode='r')
data = f1.read()
splitdata = re.split('।',data)
for apart in splitdata :
print apart
然后,不分割字符串。 這是輸出:
তার মধ্যে আশ্চর্য একটা মিল। ইস্টার্ন মেট্রোপলিটান বাইপাস। এ বার দিন এল। বদলে গিয়েছে অনেকটাই।
但是,如果我直接將字符串放入變量中,然后將其拆分:
string_var = 'তার মধ্যে আশ্চর্য একটা মিল। ইস্টার্ন মেট্রোপলিটান বাইপাস। এ বার দিন এল। বদলে গিয়েছে অনেকটাই।'
splitstring = re.split('।',string_var)
for apart in splitstring :
print apart
然后就可以了。 輸出:
তার মধ্যে আশ্চর্য একটা মিল
ইস্টার্ন মেট্রোপলিটান বাইপাস
এ বার দিন এল
বদলে গিয়েছে অনেকটাই
我注意到的一件事是,如果我打印從split函數返回的值,則會看到兩個不同的輸出。
這是從split-ed文件讀取的數據:
print splitdata
[u'\u09a4\u09be\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u0986\u09b6\u09cd\u099a\u09b0\u09cd\u09af \u098f\u0995\u099f\u09be \u09ae\u09bf\u09b2\u0964 \u0987\u09b8\u09cd\u099f\u09be\u09b0\u09cd\u09a8 \u09ae\u09c7\u099f\u09cd\u09b0\u09cb\u09aa\u09b2\u09bf\u099f\u09be\u09a8 \u09ac\u09be\u0987\u09aa\u09be\u09b8\u0964 \u098f \u09ac\u09be\u09b0 \u09a6\u09bf\u09a8 \u098f\u09b2\u0964 \u09ac\u09a6\u09b2\u09c7 \u0997\u09bf\u09df\u09c7\u099b\u09c7 \u0985\u09a8\u09c7\u0995\u099f\u09be\u0987\u0964\n']
這是字符串split-ed:
print splitstring
['\xe0\xa6\xa4\xe0\xa6\xbe\xe0\xa6\xb0 \xe0\xa6\xae\xe0\xa6\xa7\xe0\xa7\x8d\xe0\xa6\xaf\xe0\xa7\x87 \xe0\xa6\x86\xe0\xa6\xb6\xe0\xa7\x8d\xe0\xa6\x9a\xe0\xa6\xb0\xe0\xa7\x8d\xe0\xa6\xaf \xe0\xa6\x8f\xe0\xa6\x95\xe0\xa6\x9f\xe0\xa6\xbe \xe0\xa6\xae\xe0\xa6\xbf\xe0\xa6\xb2',
' \xe0\xa6\x87\xe0\xa6\xb8\xe0\xa7\x8d\xe0\xa6\x9f\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa7\x8d\xe0\xa6\xa8 \xe0\xa6\xae\xe0\xa7\x87\xe0\xa6\x9f\xe0\xa7\x8d\xe0\xa6\xb0\xe0\xa7\x8b\xe0\xa6\xaa\xe0\xa6\xb2\xe0\xa6\xbf\xe0\xa6\x9f\xe0\xa6\xbe\xe0\xa6\xa8 \xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x87\xe0\xa6\xaa\xe0\xa6\xbe\xe0\xa6\xb8',
' \xe0\xa6\x8f \xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb0 \xe0\xa6\xa6\xe0\xa6\xbf\xe0\xa6\xa8 \xe0\xa6\x8f\xe0\xa6\xb2',
' \xe0\xa6\xac\xe0\xa6\xa6\xe0\xa6\xb2\xe0\xa7\x87 \xe0\xa6\x97\xe0\xa6\xbf\xe0\xa7\x9f\xe0\xa7\x87\xe0\xa6\x9b\xe0\xa7\x87 \xe0\xa6\x85\xe0\xa6\xa8\xe0\xa7\x87\xe0\xa6\x95\xe0\xa6\x9f\xe0\xa6\xbe\xe0\xa6\x87',
'']
似乎這里有兩種不同的編碼,並且split正在處理字符串的編碼,但是當從文件中讀取字符串時,split不能用於編碼。 從文件讀取時是否需要更改編碼以使其正常工作?
您需要使用
re.split(u'।',data)
要么
data.split(u'।')
u
是必需的,因為您使用Unicode。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.