私は文字列を持っています
"This is a small \t\t world"
文字列の「small」と「world」の間に 2 つのタブがあるとします。タブスペースの1つをトリミングして、次のようにするにはどうすればよいですか:
"This is a small \t world"
"small" と "world" という単語は、文中に 1 回だけ使用できます。基本的に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
。
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:]
使用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?'
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