2013-01-18 84 views
1

我有一個字符串作爲蟒蛇刪除字符串1個選項卡中的字符串

"This is a small \t\t world" 

假設字符串在單詞之間2個標籤「小」和「世界」。我如何可以修剪標籤空間之一,使我得到:

"This is a small \t world" 

詞語「小」和「世界」只能一次在句子中出現。基本上給出了兩個具體的話,我想修剪它們之間的額外的標籤

+4

你怎麼想確定?它是否必須位於「小」和「世界」之間?在字符串的末尾?這是不明確的。 –

+0

請檢查我的編輯。我只想在小詞和世界詞之間移除標籤。我不希望任何其他選項卡被替換 – arjun

+0

請澄清什麼定義了重要的選項卡,那麼字符串「small \ t \ t world small \ t \ t world」呢?那麼''小富吧\世界吧'呢? –

回答

2

使用re ...

import re 

s = b"This is  a small   world" 

s = re.sub(r'(.*\bsmall *)\t+(*world\b.*)', r'\1\t\2', s) 

print s 

輸出:

>>> 
This is   a small  world 

這將讓所有的空格前後兩tabs

0

您可以使用Python的re模塊來使用正則表達式:

import re 

s = "This is \t\t a small \t\t world" 

s1 = re.sub(r'(?<=small +)\t+(?= +world)', '\t', s) 

這將找到一個或"small "" world"之間的行更多的\t,並用單取代的\t的整個序列\t

+2

我認爲你應該可能使它處理額外的空白之間的小世界 – root

+0

我編輯的代碼示例帳戶一或更多空間字符旁邊的小和世界。 – Brian

+2

'後視需要固定寬度的圖案' – DSM

1
def remove_tab(st, word1, word2): 
    index1 = st.find(word1) 
    index2 = st[index1:].find(word2) 
    replacement = st[index1:index2].replace('\t\t', '\t') 
    return st[:index1] + replacement + st[index2:] 
1

使用regex

In [114]: def func(st,*words): 
    rep=" \t ".join(words) 
    reg="\b%s\s?\t{1,}\s?%s\b"%(words[0],words[1]) 
    return re.sub(reg,rep,st) 
    .....: 

In [118]: strs='This is \t\t\t a small\t\t\tworld, very small world?' 

In [119]: func(strs,"small","world") 
Out[119]: 'This is \t\t\t a small \t world, very small world?' 

In [120]: func(strs,"is","a") 
Out[120]: 'This is \t a small\t\t\tworld, very small world?' 
+0

也許會在裏面扔'\ b'? ''小\世界案例''。 – DSM

+0

@DSM很好的建議,解決方案更新。 –