strip()
Pythonについて質問があります。文字列からセミコロンを削除しようとしています。セミコロンが文字列の最後にある場合にこれを行う方法を知っていますが、それが最後の要素でない場合はどうすればよいですか。最後の要素まで。
例えば:
1;2;3;4;\n
最後のセミコロンを削除したいと思います。
他の文字も削除します。
>>> '1;2;3;4;\n'.strip('\n;')
'1;2;3;4'
>>> "".join("1;2;3;4;\n".rpartition(";")[::2])
'1;2;3;4\n'
交換してはどうですか?
string1='1;2;3;4;\n'
string2=string1.replace(";\n","\n")
>>> string = "1;2;3;4;\n"
>>> string.strip().strip(";")
"1;2;3;4"
これにより、最初に先頭または末尾の空白が削除され、次に先頭または末尾のセミコロンが削除されます。
これを試して:
def remove_last(string):
index = string.rfind(';')
if index == -1:
# Semi-colon doesn't exist
return string
return string[:index] + string[index+1:]
これにより、行の後に続く文字に関係なく、行の最後のセミコロンを削除できるはずです。
>>> remove_last('Test')
'Test'
>>> remove_last('Test;abc')
'Testabc'
>>> remove_last(';test;abc;foobar;\n')
';test;abc;foobar\n'
>>> remove_last(';asdf;asdf;asdf;asdf')
';asdf;asdf;asdfasdf'
提供されている他の回答は、特定の例に合わせて調整されているため、おそらく高速ですが、これはもう少し柔軟性があります。
re.sub(r';(\W*$)', r'\1', '1;2;3;4;\n') -> '1;2;3;4\n'
strip 関数のみを使用する場合は、これが 1 つの方法です。スライス表記を使用すると、strip() 関数のスコープを文字列の一部に制限し、末尾に「\n」を追加できます。
# create a var for later
str = "1;2;3;4;\n"
# format and assign to newstr
newstr = str[:8].strip(';') + str[8:]
rfind() メソッド (Micheal0x2a のソリューションと同様) を使用すると、ステートメントを多くの文字列に適用できます。
# create a var for later
str = "1;2;3;4;\n"
# format and assign to newstr
newstr = str[:str.rfind(';') + 1 ].strip(';') + str[str.rfind(';') + 1:]
文字列をセミコロンで分割し、空でない部分を ; を使用して再び結合することができます。区切りとして
parts = '1;2;3;4;\n'.split(';')
non_empty_parts = []
for s in parts:
if s.strip() != "": non_empty_parts.append(s.strip())
print "".join(non_empty_parts, ';')