簡體   English   中英

Python:用一個空格替換雙空格並刪除單個空格

[英]Python: substitute double space with one space and remove single space

我想更改這樣的字符串:

T h i s  i s  a  t e s t

至:

This is a test

這是我的代碼,有效

    while '  ' in s:
      s = s.replace('  ', '$$')        
    while ' ' in s:
      s = s.replace(' ', '')
    while '$$' in s:
      s = s.replace('$$', ' ')     

但是,對此有簡單的解決方案嗎?

對於刪除所有空格或刪除單個空格並保留多個空格,也有類似的解決方案,但是在我的情況下,我也必須用單個空格替換雙空格。

對這個和po作一點修改!

import re

s = 'T h i s  i s  a  t e s t'
print(re.sub(r'([^ ]) ([^ ])',r'\1 \2',s))

輸出

This is a test
s="T h i s  i s  a  t e s t"

s=" ".join([str(i).replace(" ","") for i in s.split("  ")])

這應該工作。

說明:

  1. 當遇到兩個空格時,通過分割字符串來創建新列表。
  2. 通過遍歷先前構造的列表並替換每個項目中的空格來創建新列表。
  3. 通過加入先前創建的列表來創建新字符串,該列表將每個元素用空格分隔。

您可以在re中使用否定的前瞻:

import re

s = 'T h i s  a  t e s t'
t = re.sub(r' (?! )', '', s)
print(t)

給出預期

This is a test

實際上,它為每個空格序列刪除一個空格:

>>> t= 'T h i s  i s   a    t e s t'
>>> re.sub(r' (?! )', '', t)
'This is  a   test'
s = 'T h i s   i s   a   t e s t'
''.join([row[0] for row in zip(s, range(len(s)+1)) if row[1]%2==0])

結果:

'This is a test'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM