python裡面的len 對於漢字和非漢字都視為1個字元,然而輸出的時候中文佔的是2個非中文的寬度,使得一些輸出無法對齊。
網上有些資料說使用空格填充的時候可以使用中文的空格,也就是 chr(12288)
但是對於中英文混合來說,這個就沒用了
a="你好呀123"
b="123456"
print("哈哈哈".format(a,chr(12288)))
print("哈哈哈".format(b,chr(12288)))
因此這種情況下我們可以自己手寫乙個函式來使得中英文對齊。
已知中文寬度是英文的兩倍,因此對於乙個句子我們可以數出其中文個數,假設總長度(句子+填充)為a,中文個數為b,英文個數為c
那麼需要末尾填充的空格(這裡使用英文空格) 就是 a-b-c
這個是左對齊的**,返回的就是處理完畢的字串,直接print出來就好了
# s:原字串 length:填充總長度
#左對齊
def standard_string(s,length):
count=0
for aim in s:
if('\u4e00' <= aim <= '\u9fff'):
count+=1
flag=length-len(s)-count
return s+' '*flag
結果:
但是假如字串裡面混入了中文的標點,比如(,那就沒用了,因為(不再那裡面
我自己上網找了一下unicode碼,發現好像沒有特別的為漢字所有標點放在一起,所以我自己定了個界限,從fe10 往後都算
# s:原字串 length:填充總長度
#左對齊
def standard_string(s,length):
count=0
for aim in s:
if('\u4e00' <= aim <= '\u9fff' or 'fe10'<=aim):
count+=1
flag=length-len(s)-count
if(flag>=0):
return s+' '*flag
else:
return "wrong"
a="((("
b="((("
print(standard_string(a,10)+'aaa')
print(standard_string(b,10)+'aaa')
python 中英文 分離 中英文分離
由於沒有安裝 numpy 根據部落格提示,成功安裝了numpy 執行之後沒有錯誤,可是嘛,我看不到結果。也就隨它去了。主要有兩個問題,乙個是執行的時候出現的 valueerror need more than 0 values to unpack 對於空行就會報錯。不機智。於是加了個判斷。讓它一直走...
中英文本元混合處理方法
1,txt檔案匯入sql時 303410001401?600 lang 4 t粵ig?0220?011840628900000?bpo 303410001501?600 landau中er?0220?011840628900000?bpo 303410001601?600 lang 6 t漢ig?0...
識別中英文
問 c語言的char的陣列中有中文和英文 怎麼取出來 文字是從文字檔案讀取出來的,放進去,怎麼取出來不出現亂碼?中文是兩個位元組,英文是乙個位元組,如果取到英文再去取中文,中文就會亂碼。怎麼解決這個問題?問題補充 一次全部列印沒問題,但是我現在的問題是需要把它截斷顯示,功能是電子書的分頁,所以分頁的...