1

私は文字列を持っています

 "This is a small \t\t world"

文字列の「small」と「world」の間に 2 つのタブがあるとします。タブスペースの1つをトリミングして、次のようにするにはどうすればよいですか:

 "This is a small \t world"

"small" と "world" という単語は、文中に 1 回だけ使用できます。基本的に2つの特定の単語が与えられた場合、それらの間の余分なタブをトリミングしたい

4

4 に答える 4

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

これにより、2 つの前後のすべてのスペースが保持されますtabs

于 2013-01-18T18:24:11.863 に答える
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:]
于 2013-01-18T18:37:19.573 に答える
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?'
于 2013-01-18T18:41:50.703 に答える
0

Python re モジュールを使用して、正規表現を使用できます。

import re

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

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

これにより、 と\tの間の行に1 つ以上の が見つかり、のシーケンス全体が 1 つの に置き換えられます。"small "" world"\t\t

于 2013-01-18T18:28:10.140 に答える