最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)emoji對齊特殊字符對齊高級文本對齊

 更新時間:2023年11月06日 09:23:24   作者:三塊錢  
這篇文章主要為大家介紹了python實現(xiàn)emoji對齊特殊字符對齊高級文本對齊方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

問題引出

我們在程序打印輸出時,如何我們所輸出的字符中包含emoji文本,或者其它特殊的字符文本,則我們的打印對齊效果將出現(xiàn)錯位。

以下代碼復現(xiàn)了這一效果(tips: 馬老師 前面的 | 符號是為了觀察對齊效果):

# -*- coding:UTF-8 -*-
# region 引入必要依賴
from DebugInfo.DebugInfo import *
# endregion
if __name__ == "__main__":
    畫板 = 打印模板()
    畫板.打印空行(2)
    畫板.準備表格()
    畫板.添加一行('序號', '姓名', '自評', '班主任').修飾行(青字)  # 作為標題行
    畫板.添加一行('1', '小紅', '我很開朗', '|馬老師')
    畫板.添加分隔行()
    畫板.添加一行('2', '豬小明', '我得了很多小花 ?', '|馬老師')
    畫板.添加分隔行()
    畫板.添加一行('3', '趙虹', '我有愛心?', '|馬老師')
    畫板.添加分隔行()
    畫板.添加一行('4', '張?zhí)熘?, '我是女生♀?我有長頭發(fā)', '|馬老師')
    畫板.添加空行()
    畫板.展示表格()

??以上代碼的運行打印對齊如下:

我們可以觀察到,豬小明行,馬老師靠前了

我們又可以觀察到,張?zhí)熘拘校R老師靠后了

原因解釋

為什么會出現(xiàn)上面的對齊的現(xiàn)象呢?這就要從字體說起了。
我們電腦上,所顯示的符號肯定是通過某一個字體來顯示的。所以同一個字,我們在宋體下看到的效果,和在黑體下看到的效果,是不一樣的。

一個字符,顯示其效果所占用的屏幕像素數(shù)量,稱為字符的顯示像素寬度;為方便其見,我們將字符的像素寬度相對于英文字符空格所占用的像素寬度的比值,做為下文我們要描述的字符顯示寬度值。

  • 顯然,英文空格的字符顯示寬度值是 1
  • 一個英文字符(大寫和小寫)的顯示寬度值是 1

對于以下顯示的楷體字體下的中文,一個字符的顯示寬度值是 2

顯示,對于任何可以在電腦上顯示的字符,其都有一個顯示寬度,只是不同的字符,在不同的字體下,其顯示寬度值不同罷了。

有了以上規(guī)律后,我們?nèi)绻枰獙R文本,就會比較容易了。我們計算字符的顯示寬度,根據(jù)其顯示寬度,計算并補充對應數(shù)量的空格后,文本就可以達到對齊的效果。

那現(xiàn)在來說上面馬老師對不齊的問題。根據(jù)上文中的對齊原理的解釋,馬老師對不齊,肯定是文本中存在了這樣的字符,這字符計算的顯示寬度,與其實際顯示所占用的寬度不一致,導致在補充空格時空格數(shù)量計算錯誤。

找出真兇

在上面的表格中,我們發(fā)現(xiàn)符號 ? ♥ ♀? 是不常的字符。我們把這幾個字符拿掉,再來觀察對齊效果,如下??:

# -*- coding:UTF-8 -*-
# region 引入必要依賴
from DebugInfo.DebugInfo import *
# endregion
if __name__ == "__main__":
    畫板 = 打印模板()
    畫板.打印空行(2)
    畫板.準備表格()
    畫板.添加一行('序號', '姓名', '自評', '班主任').修飾行(青字)  # 作為標題行
    畫板.添加一行('1', '小紅', '我很開朗', '|馬老師')
    畫板.添加分隔行()
    # 畫板.添加一行('2', '豬小明', '我得了很多小花 ?', '|馬老師')
    畫板.添加一行('2', '豬小明', '我得了很多小花 ', '|馬老師')
    畫板.添加分隔行()
    # 畫板.添加一行('3', '趙虹', '我有愛心?', '|馬老師')
    畫板.添加一行('3', '趙虹', '我有愛心', '|馬老師')
    畫板.添加分隔行()
    # 畫板.添加一行('4', '張?zhí)熘?, '我是女生♀?我有長頭發(fā)', '|馬老師')
    畫板.添加一行('4', '張?zhí)熘?, '我是女生我有長頭發(fā)', '|馬老師')
    畫板.添加空行()
    畫板.展示表格()

??以上代碼運行效果如下??:

嗯,對齊效果非常漂亮。

所以,我們將問題的焦點放在符號 ? ? ♀? 這三個字符上。 以下代碼打印并顯示了這三個字符的顯示寬度和實際占用寬度。

# -*- coding:UTF-8 -*-
# region 引入必要依賴
from DebugInfo.DebugInfo import *
# endregion
if __name__ == "__main__":
    畫板 = 打印模板()
    畫板.打印空行(2)
    畫板.準備表格()
    畫板.添加一行('字符','顯示寬度值').修飾行(青字)
    畫板.添加分隔行()
    畫板.添加一行('?|',顯示寬度('?'))
    畫板.添加一行('?|',顯示寬度('?'))
    畫板.添加一行('♀?|',顯示寬度('♀?'))
    畫板.添加空行()
    畫板.展示表格()

??以上代碼運行效果如下??:

上圖我們可以看到(注意看參考符號 | 的位置):

  • 字符 ? 顯示占用寬度為1, 計算的顯示寬度是2 (這將導致在對齊補空格時,少補一個空格)
  • 字符 ♥ 顯示占用寬度為1,計算的顯示寬度也是1 (實際顯示寬度和計算顯示寬度一致,對齊補齊空格正常)
  • 字符 ♀? 顯示占用寬度為2,但計算的顯示寬度為1 (這將導致在對齊補空格時,多補一個空格)

所以,對齊出錯的根本原因在于符號 ♥ 和 ♀? 在終端顯示時,顯示這兩個字符所占用的字符寬度與計算的字符寬度不一致,導致在計算對齊補空格時,補了錯誤數(shù)量的空格。

補救措施

有了以上的分析,我們知道了出現(xiàn)對齊錯位的根本原因在于部分特殊的字符顯示寬度值的計算與實際不符導致,那么我們對應的解決方案也就明朗了:修正特殊字符的顯示寬度值

如下的代碼,我們指定了特殊字符的顯示寬度值,并將其告訴了【打印模板對象】(這里是畫板),然后我們又打印顯示了帶有特殊字符的文本,觀察其對齊效果:

# -*- coding:UTF-8 -*-
# region 引入必要依賴
from DebugInfo.DebugInfo import *
# endregion
if __name__ == "__main__":
    畫板 = 打印模板()
    畫板.打印空行(2)
    畫板.準備表格()
    畫板.設(shè)置特殊字符寬度字典({'?': 1, '♀': 2})  # 修正特殊符號的顯示寬度值
    畫板.添加一行('序號', '姓名', '自評', '班主任').修飾行(青字)  # 作為標題行
    畫板.添加一行('1', '小紅', '我很開朗', '|馬老師')
    畫板.添加一行('2', '豬小明', '我得了很多小花?', '|馬老師')
    畫板.添加一行('3', '趙虹', '我有愛心?', '|馬老師')
    畫板.添加一行('4', '張?zhí)熘?, '我是女生♀?我有長頭發(fā)', '|馬老師')
    畫板.添加空行()
    畫板.展示表格()

??上面的代碼中,請留意 設(shè)置特殊字符寬度字典 方法,其修正了符號 ?和 ♀? 的顯示寬度值,這幫助程序正確的理解和計算了字符的實際顯示寬度,從而在對齊補齊空格時,可以補齊正確數(shù)量的空格。

其它的坑

在以上的分析過程中,我們所提到,所有在電腦上顯示處理的符號,都依賴于字體,這也就是說,在不同的字體下,同一個符號可能顯示的寬度(相對于空格或者符號 -),是有可能不同的,現(xiàn)觀察到的部分字體中,英文字符的寬度如果計算為單位1,中文字符的寬度是1.5,在這種非整數(shù)倍的字體下,遇到中英文混合情況時,對齊處理是非常難的,甚至是無法做到的。

對于特殊字符,同樣在不同的字體下,其顯示寬度也是不同的,在實際的應用中要多加留意處理。

另外,為了方便文本對齊的計算,大家在實際使用時,需要注意終端所使用的字體是否是等寬字體,非等寬字體下,可能出現(xiàn)字體寬度不是整數(shù)的情況,對齊處理效果會受到影響。

小結(jié)

以上就是python實現(xiàn)emoji對齊特殊字符對齊高級文本對齊的詳細內(nèi)容,更多關(guān)于python特殊文本字符對齊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中tuple類型的使用

    Python中tuple類型的使用

    在Python中,元組(tuple)是一種不可變的序列類型,可以包含多個值,這些值可以是不同類型的,本文主要介紹了Python中tuple類型的使用,感興趣的可以了解一下
    2023-12-12
  • 基于Python實現(xiàn)高效PDF數(shù)據(jù)抽取工具

    基于Python實現(xiàn)高效PDF數(shù)據(jù)抽取工具

    在信息技術(shù)高度發(fā)展的今天,自動化處理日常文檔成為提高工作效率的關(guān)鍵,下面我們就來看看如何使用Python實現(xiàn)高效PDF數(shù)據(jù)抽取工具,感興趣的小伙伴可以了解下
    2026-05-05
  • 詳解Python中的三器一閉

    詳解Python中的三器一閉

    這篇文章主要介紹了詳解Python中的三器一閉,Python中的三器一閉是指迭代器、裝飾器、生成器和閉包,需要的朋友可以參考下
    2023-05-05
  • 使用Python腳本一鍵重命名序列幀圖片的名稱

    使用Python腳本一鍵重命名序列幀圖片的名稱

    在開發(fā)中,我們經(jīng)常需要使用序列幀動畫來實現(xiàn)下拉刷新、加載動畫、空狀態(tài)動效等交互,設(shè)計師交付的序列幀圖片資源,命名往往各不相同,而我們的代碼通常期望統(tǒng)一的命名規(guī)范,本文將教你使用一行Python腳本,實現(xiàn)圖片的批量重命名,需要的朋友可以參考下
    2025-12-12
  • python?使用ctypes調(diào)用C/C++?dll詳情

    python?使用ctypes調(diào)用C/C++?dll詳情

    這篇文章主要介紹了python?使用ctypes調(diào)用C/C++?dll詳情,文章首先通過導入ctypes模塊,加載C/C++?dll到python進程空間展開主題相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • Django 連接sql server數(shù)據(jù)庫的方法

    Django 連接sql server數(shù)據(jù)庫的方法

    這篇文章主要介紹了Django 連接sql server數(shù)據(jù)庫的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Pandas中統(tǒng)計匯總可視化函數(shù)plot()的使用

    Pandas中統(tǒng)計匯總可視化函數(shù)plot()的使用

    Pandas提供了許多強大的數(shù)據(jù)處理和分析功能,其中plot()函數(shù)就是其可視化功能的一個重要組成部分,本文主要介紹了Pandas中統(tǒng)計匯總可視化函數(shù)plot()的使用,感興趣的可以了解一下
    2025-05-05
  • WxPython建立批量錄入框窗口

    WxPython建立批量錄入框窗口

    這篇文章主要為大家詳細介紹了WxPython建立批量錄入框窗口,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • python中DataFrame數(shù)據(jù)合并merge()和concat()方法詳解

    python中DataFrame數(shù)據(jù)合并merge()和concat()方法詳解

    Pandas提供了很多合并Series和Dataframe的強大的功能,通過這些功能可以方便的進行數(shù)據(jù)分析,下面這篇文章主要給大家介紹了關(guān)于python中DataFrame數(shù)據(jù)合并merge()和concat()方法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 在Python3 numpy中mean和average的區(qū)別詳解

    在Python3 numpy中mean和average的區(qū)別詳解

    今天小編就為大家分享一篇在Python3 numpy中mean和average的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

黎平县| 冷水江市| 东港市| 准格尔旗| 泗水县| 银川市| 喜德县| 永清县| 原平市| 开鲁县| 梁平县| 龙泉市| 临沭县| 星座| 岚皋县| 丁青县| 中卫市| 上饶市| 鄂托克旗| 泉州市| 银川市| 修水县| 临安市| 延长县| 枞阳县| 甘孜| 海阳市| 自治县| 蒲城县| 个旧市| 宁国市| 抚宁县| 河津市| 梨树县| 读书| 郸城县| 乐陵市| 巴青县| 贵定县| 台州市| 岑巩县|