亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)半角數(shù)字轉全角數(shù)字的完整方法

 更新時間:2025年10月26日 10:26:05   作者:袁袁袁袁滿  
半角數(shù)字(ASCII數(shù)字)和全角數(shù)字(Unicode全角數(shù)字)是兩種不同的字符表示形式,全角數(shù)字主要用于中文排版,下面小編就來和大家簡單講講如何使用Python進行半角數(shù)字與全角數(shù)字互轉

一、半角與全角數(shù)字概述

半角數(shù)字(ASCII數(shù)字)和全角數(shù)字(Unicode全角數(shù)字)是兩種不同的字符表示形式:

  • 半角數(shù)字:0 1 2 3 4 5 6 7 8 9(Unicode U+0030到U+0039)
  • 全角數(shù)字:0 1 2 3 4 5 6 7 8 9(Unicode U+FF10到U+FF19)

全角數(shù)字主要用于中文排版,使數(shù)字與中文字符對齊,保持視覺上的統(tǒng)一。

二、實現(xiàn)方法

方法1:基礎字符轉換(推薦)

def half_to_full_width_number(text):
    """
    將字符串中的半角數(shù)字轉換為全角數(shù)字
    
    參數(shù):
        text: 輸入字符串
        
    返回:
        轉換后的字符串
    """
    result = []
    for char in text:
        if '0' <= char <= '9':
            # 半角數(shù)字轉全角:Unicode碼點+65248
            full_char = chr(ord(char) + 0xFEE0)
            result.append(full_char)
        else:
            result.append(char)
    return ''.join(result)

# 測試示例
if __name__ == "__main__":
    test_cases = [
        "1234567890",
        "電話: 13800138000",
        "版本號3.14.159",
        "混合123abc456",
        "沒有數(shù)字的字符串"
    ]
    
    print("半角數(shù)字轉全角數(shù)字測試:")
    print("=" * 40)
    for case in test_cases:
        converted = half_to_full_width_number(case)
        print(f"原始: {case}")
        print(f"轉換: {converted}")
        print("-" * 40)

運行結果:

半角數(shù)字轉全角數(shù)字測試:
========================================
原始: 1234567890
轉換: 1234567890
----------------------------------------
原始: 電話: 13800138000
轉換: 電話: 13800138000
----------------------------------------
原始: 版本號3.14.159
轉換: 版本號3.14.159
----------------------------------------
原始: 混合123abc456
轉換: 混合123abc456
----------------------------------------
原始: 沒有數(shù)字的字符串
轉換: 沒有數(shù)字的字符串
----------------------------------------

方法2:使用str.translate()(更高效)

def half_to_full_width_number_fast(text):
    """
    使用translate方法快速轉換
    """
    # 創(chuàng)建轉換表
    translation_table = str.maketrans(
        '0123456789',
        '0123456789'
    )
    return text.translate(translation_table)

# 測試
if __name__ == "__main__":
    test_str = "Python 3.10發(fā)布于2021年10月"
    print("快速轉換測試:")
    print(f"原始: {test_str}")
    print(f"轉換: {half_to_full_width_number_fast(test_str)}")

運行結果:

快速轉換測試:
原始: Python 3.10發(fā)布于2021年10月
轉換: Python 3.10發(fā)布于2021年10月

方法3:正則表達式替換

import re

def half_to_full_width_number_regex(text):
    """
    使用正則表達式替換半角數(shù)字
    """
    def replace_match(match):
        digit = match.group()
        return chr(ord(digit) + 0xFEE0)
    
    return re.sub(r'[0-9]', replace_match, text)

# 測試
if __name__ == "__main__":
    test_str = "訂單號: 987654321, 金額: 199.99元"
    print("正則表達式轉換測試:")
    print(f"原始: {test_str}")
    print(f"轉換: {half_to_full_width_number_regex(test_str)}")

運行結果:

正則表達式轉換測試:
原始: 訂單號: 987654321, 金額: 199.99元
轉換: 訂單號: 987654321, 金額: 199.99元

三、性能比較

import timeit

def test_performance():
    test_str = "Python 3.10發(fā)布于2021年10月,版本號1234567890" * 100
    
    methods = [
        ("基礎方法", half_to_full_width_number),
        ("translate方法", half_to_full_width_number_fast),
        ("正則方法", half_to_full_width_number_regex)
    ]
    
    print("性能測試:")
    print("=" * 40)
    for name, func in methods:
        time = timeit.timeit(lambda: func(test_str), number=1000)
        print(f"{name}: {time:.4f}秒")

if __name__ == "__main__":
    test_performance()

運行結果示例:

性能測試:
========================================
基礎方法: 0.8423秒
translate方法: 0.0456秒
正則方法: 1.2345秒

性能分析:

  • translate()方法最快,適合處理大量文本
  • 基礎方法次之,代碼更直觀
  • 正則表達式方法最慢,但靈活性最高

四、完整工具類實現(xiàn)

class HalfFullWidthConverter:
    """
    半角全角字符轉換工具類
    """
    
    @staticmethod
    def half_to_full_number(text):
        """半角數(shù)字轉全角數(shù)字"""
        return text.translate(str.maketrans(
            '0123456789',
            '0123456789'
        ))
    
    @staticmethod
    def half_to_full_alpha(text):
        """半角字母轉全角字母"""
        return text.translate(str.maketrans(
            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
        ))
    
    @staticmethod
    def half_to_full(text):
        """半角數(shù)字和字母轉全角"""
        return HalfFullWidthConverter.half_to_full_alpha(
            HalfFullWidthConverter.half_to_full_number(text)
        )
    
    @staticmethod
    def full_to_half_number(text):
        """全角數(shù)字轉半角數(shù)字"""
        return text.translate(str.maketrans(
            '0123456789',
            '0123456789'
        ))

# 測試工具類
if __name__ == "__main__":
    converter = HalfFullWidthConverter()
    
    test_str = "ABCabc123測試TEST456"
    print("工具類測試:")
    print(f"原始: {test_str}")
    print(f"數(shù)字轉全角: {converter.half_to_full_number(test_str)}")
    print(f"字母轉全角: {converter.half_to_full_alpha(test_str)}")
    print(f"全部轉全角: {converter.half_to_full(test_str)}")
    print(f"全角數(shù)字轉半角: {converter.full_to_half_number('12345')}")

運行結果:

工具類測試:
原始: ABCabc123測試TEST456
數(shù)字轉全角: ABCabc123測試TEST456
字母轉全角: ABCabc123測試TEST456
全部轉全角: ABCabc123測試TEST456
全角數(shù)字轉半角: 12345

五、實際應用場景

中文排版處理:

text = "本文發(fā)布于2023年5月1日,閱讀量已達10000+"
full_text = HalfFullWidthConverter.half_to_full(text)
print(full_text)
# 輸出: 本文發(fā)布于2023年5月1日,閱讀量已達10000+

數(shù)據(jù)清洗:

def clean_phone_number(phone):
    """清洗電話號碼,確保所有數(shù)字為半角"""
    return HalfFullWidthConverter.full_to_half_number(phone).replace(" ", "")

phone = "138?。埃埃保场。福埃埃?
print(clean_phone_number(phone))  # 輸出: 13800138000

驗證碼生成:

import random

def generate_verification_code(length=6):
    """生成全角數(shù)字驗證碼"""
    code = ''.join(random.choices('0123456789', k=length))
    return HalfFullWidthConverter.half_to_full_number(code)

print("驗證碼:", generate_verification_code())  # 輸出類似: 驗證碼: 789456

六、注意事項

非數(shù)字字符:轉換函數(shù)會保留所有非數(shù)字字符不變

性能考慮:處理大量文本時推薦使用translate()方法

反向轉換:可以使用chr(ord(char) - 0xFEE0)將全角轉回半角

擴展性:工具類可以方便地擴展支持更多字符類型的轉換

七、總結

本教程介紹了三種Python實現(xiàn)半角數(shù)字轉全角數(shù)字的方法:

  • 基礎字符遍歷轉換 - 直觀易懂
  • translate()方法 - 性能最佳
  • 正則表達式方法 - 靈活但性能較低

還提供了完整的工具類實現(xiàn),可以方便地進行半角/全角數(shù)字、字母的相互轉換。根據(jù)實際需求選擇合適的方法,在性能要求高的場景使用translate(),需要靈活處理時使用正則表達式,教學演示則適合基礎方法。

所有代碼都附帶了完整的測試用例和運行結果,方便讀者理解和驗證。

到此這篇關于Python實現(xiàn)半角數(shù)字轉全角數(shù)字的完整方法的文章就介紹到這了,更多相關Python半角數(shù)字轉全角數(shù)字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python標準庫sys庫常用功能詳解

    Python標準庫sys庫常用功能詳解

    這篇文章主要介紹了Python標準庫sys庫常用功能詳解,sys是Python提供的程序與解釋器交互的標準庫,文章圍繞主題展開相關介紹,需要的朋友可以參考一下
    2022-07-07
  • python自動化操作之動態(tài)驗證碼、滑動驗證碼的降噪和識別

    python自動化操作之動態(tài)驗證碼、滑動驗證碼的降噪和識別

    很多網站登錄都需要輸入驗證碼,如果要實現(xiàn)自動登錄就不可避免的要識別驗證碼,下面這篇文章主要給大家介紹了關于python自動化操作之動態(tài)驗證碼、滑動驗證碼的降噪和識別,需要的朋友可以參考下
    2021-08-08
  • python Django實戰(zhàn)之歌曲搜索功能實現(xiàn)

    python Django實戰(zhàn)之歌曲搜索功能實現(xiàn)

    這篇文章主要為大家詳細介紹了如何利用python Django實現(xiàn)歌曲搜索功能,文中的示例代碼講解詳細,具有一定的參考價值,有需要的小伙伴開業(yè)了解下
    2023-10-10
  • 對pandas將dataframe中某列按照條件賦值的實例講解

    對pandas將dataframe中某列按照條件賦值的實例講解

    今天小編就為大家分享一篇對pandas將dataframe中某列按照條件賦值的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python與matlab一些常用函數(shù)互轉問題

    python與matlab一些常用函數(shù)互轉問題

    這篇文章主要介紹了python與matlab一些常用函數(shù)互轉,包括十六進制字節(jié)流數(shù)據(jù)的相關知識,本文通過示例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python建造者模式案例運行原理解析

    Python建造者模式案例運行原理解析

    這篇文章主要介紹了python建造者模式案例運行原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python語言開發(fā)高并發(fā)爬蟲示例探討

    Python語言開發(fā)高并發(fā)爬蟲示例探討

    這篇文章主要為大家介紹了Python語言開發(fā)高并發(fā)爬蟲示例探討,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Python中的異常處理raise案例介紹

    Python中的異常處理raise案例介紹

    本文講解Python中手動拋出異常的raise語句用法,包括三種形式及異常處理流程,介紹如何通過traceback模塊定位錯誤位置,幫助開發(fā)者有效管理程序異常,感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • 詳解python datetime模塊

    詳解python datetime模塊

    這篇文章主要介紹了python datetime模塊的相關資料,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-08-08
  • 深入了解Python中描述器的使用

    深入了解Python中描述器的使用

    Python描述器是Python編程語言中的一個重要特性,它提供了一種靈活且強大的機制來控制屬性訪問行為。在本文中,我們將詳細介紹Python描述器的概念、實現(xiàn)方式以及如何使用Python描述器來增強我們的Python程序
    2023-03-03

最新評論