1. 程式人生 > >python中文字串居中/中文居中python/python漢字字串居中:手撕比方法好用

python中文字串居中/中文居中python/python漢字字串居中:手撕比方法好用

在做一個小的格式化輸出的時候出現了問題:無論怎麼排,漢字都無法很順利地被居中,尤其是漢字和英文或者數字在一起時,更是一團糟。

python有內建的字串方法str.center(x),可以讓字串以i的長度輸出並居中。

但是!

但是!

但是!

在計算字串長度時候預設是ascii的長度,也就是一個字元長度為1。

這顯然行不通,因為一箇中文佔據2長度!中文符號亦然。

所以你要是想讓 x=‘居中juzhong’ 這個字串居中,你用str.center(len(x))的時候,就不能達到目的,原因是 len(x)=9 而不是實際上的11,輸出的結果那自然是相當糟糕的。於是我寫了一個函式,可以讀取正確的字串長度:

def lenCN(n):
    #遇到非英文,自動二倍長度。
    n=list(n)
    stl=0
    for x in n :
        if x in string.printable:
            stl +=1
        else :
            stl+=2
    return stl
這樣字串的正確長度就可以讀取了,但是這對於順利進行居中排版還是不夠的。正確的做法應該是:用這個函式讀取某項所有單位的實際長度(比如‘姓名’),求出其中最大值,(比如‘愛新覺羅狗蛋’,為12),再加上為了美觀考慮的一些空長度(隨意,比如4)。然後讓所有的姓名單位輸出時用 print(x.center(12+4))即可。

有的時候,這樣的輸出也依然無法做到居中(奇數偶數空格的問題)。

這個時候,可以使用我寫的這個小函式來完成。

def merg(x,y):
    a=int((最大長度列表[專案名]-checkCN(當前項))/2)
    b=int(((最大長度列表[專案名]-checkCN(當前項))/2)
    if a+b != ((最大長度列表[專案名]-checkCN(當前項)))) :
        b+=1
#防止出現奇數項的情況
    return(a,b,)
def getmerg(x,y):
    y=' '*merg(x,y)[0]+y+' '*merg(x,y)[1]
    return y

一定可以達到目的。

相關推薦

python中文字串居中/中文居中python/python漢字字串居中方法

在做一個小的格式化輸出的時候出現了問題:無論怎麼排,漢字都無法很順利地被居中,尤其是漢字和英文或者數字在一起時,更是一團糟。 python有內建的字串方法str.center(x),可以讓字串以i的長度輸出並居中。 但是! 但是! 但是! 在計算字串長度時候預設是asci

使用python進行面部合成,PS多了

  一. 準備工作 1. 此程式使用的是 Face++ 的API,所以需要去Face++官網註冊賬號: 2. 建立應用,獲取 key 和 secret     3. 下載 simplejson 模組 ,使用pip就可以下載了 pip

語音對話英語翻譯線上翻譯成中文哪個方法

想要進行將中文翻譯成英文,或者將英文翻譯成中文的操作,其實有一個非常簡單的工具就能夠幫助完成將語音進行翻譯轉換的軟體。 在應

python判斷字串包含中文、數字、英文

1.判斷字串只包含中文:#encoding=utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') def check_contain_chinese(check_str): flag = True

python 2.7輸出中文字串的編碼問題

http://wolfmaster.iteye.com/blog/638029 為什麼會報錯“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就來研

python數字轉換成中文/數字轉換成漢字python字串方法最優

這幾天做一個小程式的時候有了這樣的需求:把阿拉伯數字轉換成漢字,比如把‘101’轉換成‘一百零一’,把‘10000’轉換成‘一萬’。 做這樣的程式的時候有以下幾個技術難點: 1.加單位問題:比如需要加入‘十‘’百‘’千‘’萬’ 2.去掉多餘的‘零’的問題:因

python讀取檔案裡中文編碼後的字串(\\xe6\\xb1\\x9f)中文轉換的問題

最近在解析資料,悲催遇到錯誤手動退出,於是資料庫沒儲存上。於是只能從日誌裡提取資料再存到資料庫。例如:[2018-05-23 18:09:36] [DEBUG] 5 : ('\xe6\xb1\x9f\xe8\x8b\x8f\xe7\x9c\x81\xe5\xb9\xbf\xe

Python HTTP庫requests中文頁面亂碼解決方案!

獲得 使用 http text odin 抽取 from Coding blog 把html編碼類型賦與獲取到文本 獲取html編碼類型: 1.使用apparent_encoding可以獲得真實編碼 1 >>> response.apparent_enc

Python 標準庫 BaseHTTPServer 中文翻譯

數字 del path 日期和時間 第一個 sockets 輸入流 Language 結構 Python 標準庫 BaseHTTPServer 中文翻譯。 註意: BaseHTTPServer模塊在Python3中已被合並到http.serv

Python詞雲的中文問題

white sim off rec 好的 tex 四川 輸入 clas 1 image= Image.open(‘F:/__identity/course/建模/九寨溝地震/四川地圖.jpg‘) 2 fig = plt.figure(figsize=(20, 16))

python對打印出中文亂碼問題的解決方案

def cti 亂碼問題的解決 false exce 轉換 中文亂碼 rgs del 一、引入json包二、# 使用json模塊將序列轉換為json字符串,ensure_ascii表示不考慮asii,encoding表示轉換編碼  # json.dumps進行序列化對中文默

Python 編碼轉換與中文處理

import 字符 recent call python safari 測試 重新 open Python 編碼轉換與中文處理python 中的 unicode是讓人很困惑、比較難以理解的問題. utf-8是unicode的一種實現方式,unicode、gbk、gb2312

一條命令解決mac版本python IDLE無法輸入中文問題

install 兩種 size tps 命令 輸入 homebrew NPU python3 安裝完Python通常自動就有了一個簡易的集成環境IDLE,但在mac上,無法在IDLE中使用中文。 通常故障有兩種情況: 在IDLE中,中文輸入法根本無法工作,不會彈出輸入框

python使用jieba實現中文文檔分詞和去停

分享圖片 lac lena idt center cut inpu span code 分詞工具的選擇:   現在對於中文分詞,分詞工具有很多種,比如說:jieba分詞、thulac、SnowNLP等。在這篇文檔中,筆者使用的jieba分詞,並且基於python3環境,選擇

Python數據挖掘-中文分詞

index 一個 ins 模塊 字典 pytho 漢字 font afr 將一個漢字序列切分成一個一個單獨的詞 安裝分詞模塊: pip install jieba 分詞在特殊場合的實用性,調用add_word(),把我們要添加的分詞加入jieba詞庫 高效方法:將t

python 打印Linux中文編碼字符

style -c color linux中 linux中文 服務器 編碼 pytho span 2018-10-12 12:02:15 星期五 python -c "print ‘\346\234\215\345\212\241\345\231\250\346\217

分享《趣學Python編程》中文PDF+英文PDF+源代碼

對比 中文版 ext ofo ges -o 講解 log 經典書籍 下載:https://pan.baidu.com/s/1E_5vhsYvZ3eAG5bbdzVbjg 更多經典電子書和源代碼:http://blog.51cto.com/3215120 《趣學Python編

《趣學Python編程》中文PDF+英文PDF+源代碼

ref 分享圖片 alt src 其中 圖片 書簽 fff ges 下載:https://pan.baidu.com/s/1E_5vhsYvZ3eAG5bbdzVbjg 《趣學Python編程》中文PDF+英文PDF+源代碼 中文版PDF,帶目錄和書簽;英文版PDF,帶目錄

Ubuntu的中文是哪種字型?python的詞雲分析和 三國演義人物出場統計

Ubuntu的預設中文是哪種呢? fc-list :lang=zh 用這個命令查看出來 NotoSerifCJK-Bold.ttc 為什麼要知道這個呢? 來看一塊python3程式碼 import jieba import wordcloud f = op

Python傳送Http請求時,提交中文或者符號中文編碼問題的解決方法

前言 博主最近在用python3比較強大的Django開發web的時候,發現一些url的編碼問題,在瀏覽器提交請求api時,如果url中包含漢子,就會被自動編碼掉。呈現的結果是 ==> %xx%xx%xx。如果出現3個百分號為一個原字元則為utf8編碼,如果2個百分號則為gb2312編碼。