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

Python使用正則表達(dá)式將多個(gè)空格替換為一個(gè)空格

 更新時(shí)間:2026年04月17日 08:23:02   作者:detayun  
這篇文章為大家詳細(xì)介紹了5種Python處理字符串中連續(xù)空格的方法,主要是使用split(),join(),re.sub()等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

方法一:使用 re.sub() 替換連續(xù)空白字符

import re

def replace_multiple_spaces(s):
    # 將一個(gè)或多個(gè)空白字符替換為單個(gè)空格
    pattern = r'\s+'
    return re.sub(pattern, ' ', s)

# 測(cè)試
text = "Hello    World   This  is   a    test"
result = replace_multiple_spaces(text)
print(f"原始: {repr(text)}")
print(f"處理后: {repr(result)}")
# 輸出: 'Hello World This is a test'

方法二:只替換空格(不包括制表符、換行符)

import re

def replace_multiple_spaces_only(s):
    # 只將連續(xù)的空格替換為單個(gè)空格(保留制表符和換行符)
    pattern = r' +'
    return re.sub(pattern, ' ', s)

# 測(cè)試
text = "Hello    World\t\tTabbed\n\nNewLine"
result = replace_multiple_spaces_only(text)
print(f"原始: {repr(text)}")
print(f"處理后: {repr(result)}")
# 輸出: 'Hello World\t\tTabbed\n\nNewLine'

方法三:更精確的控制

import re

def normalize_spaces(s, preserve_newlines=True):
    """
    標(biāo)準(zhǔn)化空格
    :param s: 輸入字符串
    :param preserve_newlines: 是否保留換行符
    :return: 處理后的字符串
    """
    if preserve_newlines:
        # 先按行分割,處理每行的空格,再合并
        lines = s.split('\n')
        processed_lines = [re.sub(r' +', ' ', line) for line in lines]
        return '\n'.join(processed_lines)
    else:
        # 替換所有連續(xù)空白字符為單個(gè)空格
        return re.sub(r'\s+', ' ', s)

# 測(cè)試
text = """Hello    World
This  is   a    test
With    multiple     spaces"""

result1 = normalize_spaces(text, preserve_newlines=True)
print("保留換行符:")
print(result1)
print()

result2 = normalize_spaces(text, preserve_newlines=False)
print("不保留換行符:")
print(result2)

方法四:同時(shí)處理開頭和結(jié)尾的空格

import re

def clean_and_normalize_spaces(s):
    """
    清理字符串:去除首尾空格,并將中間多個(gè)空格替換為一個(gè)空格
    """
    # 先替換連續(xù)空白字符為單個(gè)空格
    s = re.sub(r'\s+', ' ', s)
    # 去除首尾空格
    return s.strip()

# 測(cè)試
text = "   Hello    World   This  is   a    test   "
result = clean_and_normalize_spaces(text)
print(f"原始: {repr(text)}")
print(f"處理后: {repr(result)}")
# 輸出: 'Hello World This is a test'

方法五:使用 split() 和 join()(無(wú)需正則)

def replace_spaces_simple(s):
    """
    使用 split() 和 join() 方法替換多個(gè)空格
    """
    # split() 默認(rèn)按空白字符分割,并自動(dòng)去除空字符串
    # join() 用單個(gè)空格連接
    return ' '.join(s.split())

# 測(cè)試
text = "Hello    World   This  is   a    test"
result = replace_spaces_simple(text)
print(f"原始: {repr(text)}")
print(f"處理后: {repr(result)}")
# 輸出: 'Hello World This is a test'

完整示例對(duì)比

import re

def compare_methods(text):
    print(f"原始文本: {repr(text)}\n")
    
    # 方法1: 正則替換所有空白字符
    result1 = re.sub(r'\s+', ' ', text)
    print(f"方法1 (替換所有空白字符): {repr(result1)}")
    
    # 方法2: 正則只替換空格
    result2 = re.sub(r' +', ' ', text)
    print(f"方法2 (只替換空格): {repr(result2)}")
    
    # 方法3: split/join
    result3 = ' '.join(text.split())
    print(f"方法3 (split/join): {repr(result3)}")
    
    # 方法4: 清理并標(biāo)準(zhǔn)化
    result4 = re.sub(r'\s+', ' ', text).strip()
    print(f"方法4 (清理并標(biāo)準(zhǔn)化): {repr(result4)}")

# 測(cè)試
test_text = "  Hello    World\t\tTabbed\n\nNewLine  "
compare_methods(test_text)

輸出示例

原始文本: '  Hello    World\t\tTabbed\n\nNewLine  '

方法1 (替換所有空白字符): ' Hello World Tabbed NewLine '
方法2 (只替換空格): '  Hello World\t\tTabbed\n\nNewLine  '
方法3 (split/join): 'Hello World Tabbed NewLine'
方法4 (清理并標(biāo)準(zhǔn)化): 'Hello World Tabbed NewLine'

性能對(duì)比

import timeit

text = "Hello    World   This  is   a    test" * 1000

# 方法1: 正則替換所有空白字符
def method1():
    return re.sub(r'\s+', ' ', text)

# 方法2: 正則只替換空格
def method2():
    return re.sub(r' +', ' ', text)

# 方法3: split/join
def method3():
    return ' '.join(text.split())

print("正則替換所有空白字符:", timeit.timeit(method1, number=1000))
print("正則只替換空格:", timeit.timeit(method2, number=1000))
print("split/join方法:", timeit.timeit(method3, number=1000))

推薦方案

  • 最簡(jiǎn)單高效:使用 ' '.join(s.split()) - 無(wú)需正則,自動(dòng)處理所有空白字符
  • 需要保留特定字符:使用 re.sub(r' +', ' ', s) - 只替換空格
  • 需要更精確控制:使用 re.sub(r'\s+', ' ', s).strip() - 替換所有空白字符并去除首尾空格

根據(jù)您的具體需求選擇合適的方法。對(duì)于大多數(shù)情況,' '.join(s.split()) 是最簡(jiǎn)單且高效的解決方案。

到此這篇關(guān)于Python使用正則表達(dá)式將多個(gè)空格替換為一個(gè)空格的文章就介紹到這了,更多相關(guān)Python處理字符串連續(xù)空格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python?Matplotlib處理地理數(shù)據(jù)可視化

    使用Python?Matplotlib處理地理數(shù)據(jù)可視化

    地理數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)中一個(gè)重要的領(lǐng)域,它幫助我們理解和分析與地理位置相關(guān)的數(shù)據(jù),Python?提供了強(qiáng)大的工具來(lái)處理地理數(shù)據(jù),本文將介紹如何使用?Python?Matplotlib?處理地理數(shù)據(jù)可視化,包括基礎(chǔ)概念、常用庫(kù)、數(shù)據(jù)處理以及實(shí)際案例,需要的朋友可以參考下
    2024-11-11
  • Python 分發(fā)包中添加額外文件的方法

    Python 分發(fā)包中添加額外文件的方法

    這篇文章主要介紹了Python 分發(fā)包中添加額外文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python移位密碼、仿射變換解密實(shí)例代碼

    Python移位密碼、仿射變換解密實(shí)例代碼

    凱撒密碼(Caesar 密碼)是最早的代換密碼,也是古典對(duì)稱密碼體制的典型代表,已經(jīng)初步體現(xiàn)出近代密碼系統(tǒng)的雛形,這篇文章主要給大家介紹了關(guān)于Python移位密碼、仿射變換解密的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Python中關(guān)于字符串對(duì)象的一些基礎(chǔ)知識(shí)

    Python中關(guān)于字符串對(duì)象的一些基礎(chǔ)知識(shí)

    這篇文章主要介紹了詳解Python中的字符串對(duì)象,關(guān)于字符串的操作和特性是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04
  • 將PyTorch模型部署到Android的全流程指南

    將PyTorch模型部署到Android的全流程指南

    本文詳細(xì)介紹了將PyTorch模型部署到Android設(shè)備的完整流程,主要包含四個(gè)關(guān)鍵步驟,通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2026-04-04
  • 基于Python繪制美觀動(dòng)態(tài)圓環(huán)圖、餅圖

    基于Python繪制美觀動(dòng)態(tài)圓環(huán)圖、餅圖

    這篇文章主要介紹了基于Python制作美觀動(dòng)態(tài)圓環(huán)圖、餅圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 解決df.to_csv()中文件名的問(wèn)題

    解決df.to_csv()中文件名的問(wèn)題

    這篇文章主要介紹了解決df.to_csv()中文件名的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python隨機(jī)種子ranrandom seed的使用

    python隨機(jī)種子ranrandom seed的使用

    本文介紹了在Python中設(shè)置隨機(jī)種子random seed的方法,可以使用seed()函數(shù)設(shè)置隨機(jī)種子,確保你的隨機(jī)數(shù)生成過(guò)程是可重復(fù)的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Python字符串str和json格式相互轉(zhuǎn)換

    Python字符串str和json格式相互轉(zhuǎn)換

    這篇文章主要介紹了Python字符串str和json格式相互轉(zhuǎn)換,str轉(zhuǎn)換為json格式,前提一定需要保證這個(gè)str的格式和json是一致的。下文小編向大家介紹更多相關(guān)內(nèi)容,需要的朋友可以參考一下
    2022-03-03
  • Python進(jìn)行SQLite和MySQL數(shù)據(jù)庫(kù)連接與操作的完整指南

    Python進(jìn)行SQLite和MySQL數(shù)據(jù)庫(kù)連接與操作的完整指南

    在現(xiàn)代應(yīng)用程序開發(fā)中,與數(shù)據(jù)庫(kù)進(jìn)行交互是至關(guān)重要的一環(huán),Python提供了強(qiáng)大的庫(kù)來(lái)連接和操作各種類型的數(shù)據(jù)庫(kù),其中包括SQLite和MySQL,下面就跟隨小編一起深入了解下吧
    2025-11-11

最新評(píng)論

马关县| 申扎县| 永丰县| 姜堰市| 辉南县| 固镇县| 项城市| 德保县| 赣榆县| 清水河县| 胶南市| 陈巴尔虎旗| 双辽市| 改则县| 沂南县| 南通市| 拜泉县| 忻州市| 云浮市| 大化| 宕昌县| 封开县| 贡嘎县| 松原市| 南部县| 河间市| 马龙县| 龙岩市| 玉林市| 宜兰县| 兴山县| 包头市| 仙居县| 聂荣县| 府谷县| 阿克| 庐江县| 洛隆县| 西和县| 同仁县| 鸡西市|