python 關於中英文混合輸出的那點事

2021-09-20 18:55:44 字數 1363 閱讀 3291

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的陣列中有中文和英文 怎麼取出來 文字是從文字檔案讀取出來的,放進去,怎麼取出來不出現亂碼?中文是兩個位元組,英文是乙個位元組,如果取到英文再去取中文,中文就會亂碼。怎麼解決這個問題?問題補充 一次全部列印沒問題,但是我現在的問題是需要把它截斷顯示,功能是電子書的分頁,所以分頁的...