python语言格式化输出_Python | 格式化输出字符串
一直以來,字符串的格式化輸出對于編程來說,尤其是新手,還是挺麻煩的。對于這部分的內容,筆者的建議是,只要大致能滿足輸出要求,越簡單越好,別整那復雜的~(圖文無關[俏皮])
工具/原料
Python 2.7.11
問題
今天寫這個經驗的緣由是看到下面這個字符串輸出的提問
問:排版最后怎么是歪的呢!麻煩大神們看看為什么!
下面是具體代碼:(文末會解答這個問題)
END
背景知識
在Python我們有很方便的格式化字符串函數format。應該說自從用了format函數以后,傳統的字符格式化筆者已經不會再用了^_^。下圖是占位符用法
下面是簡單的格式化用法。應該說掌握這兩部分內容已經可以處理大部分的字符串格式化問題了。更多的format函數的用法大家可以參考文末鏈接。
END
測試
1
我們先來看一下下面這部分代碼。看起來這是一份無懈可擊的代碼了,所有的打印輸出都是用相同的format函數,并且每行字符的長度(還是個數?)都是相同的20
2
然而,通過運行代碼,觀察結果,我們發現,現實跟預想有差距。
我們發現,所有含中文的格式化字符串的輸出在“長度”上都比英文字符要短。所以我們有理由推測,format函數里面的20表示的是字節數。因為,一個漢字是兩個字節的
3
所以按照上面的推測,我們重新調整了包含漢字的輸出代碼:
對11行代碼因為有3個漢字,把需要的字節數增加到23
對12行代碼因為有2個漢字,把需要的字節數增加到22
測試的結果,可以說,是完美的:)
END
解決步驟
1
現在我們回到原來的問題。我們看到,問題中的格式問題其實就是我們在上面的測試中發現的因中文引起的問題。
2
考慮到代碼中使用了兩種格式化字符串技術,為了方便起見(簡單~),我們先調整一下代碼,把代碼轉換為使用format函數的寫法
3
好,現在我們按照測試的時候的方法,對于包含中文的字符串,增加打印的字節數。表頭表尾也不能忍,也一并改了。效果棒棒噠~
4
我們再一次review代碼,發現第三個的占位符里面有多余的代碼,于是刪除了。發現刪除后內容部分最后一行的對齊方式發生了變化,還是漢字字數的問題,再調整!
5
好,現在我們的問題在這里是解決了,完全的!
END
One More Thing
其實對于這個問題是有一種很簡單純粹也很暴力的方法了,推薦大家多多使用~
我們來看新的代碼
有兩個問題大家要注意。content這個變量是直接把打印內容用三個引號括起來的,這樣里面的內容就有了一個新名字“文本字符串”,而它里面的格式是真正所見即所得的,大家手動對齊就好了。打印出來就是這個效果。
對于另一個問題,是關于print函數的。我們知道print函數默認是會換行的,所以如果換另外一種更直觀的寫法,我們需要在print函數后面加逗號。完。
END
注意事項
format官方介紹:https://docs.python.org/2/library/string.html#formatspec
經驗內容僅供參考,如果您需解決具體問題(尤其法律、醫學等領域),建議您詳細咨詢相關領域專業人士。
舉報作者聲明:本篇經驗系本人依照真實經歷原創,未經許可,謝絕轉載。
展開閱讀全部
總結
以上是生活随笔為你收集整理的python语言格式化输出_Python | 格式化输出字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker镜像启动后端口号是多少_14
- 下一篇: python 协程可以嵌套协程吗_Pyt