4

strip()Pythonについて質問があります。文字列からセミコロンを削除しようとしています。セミコロンが文字列の最後にある場合にこれを行う方法を知っていますが、それが最後の要素でない場合はどうすればよいですか。最後の要素まで。

例えば:

1;2;3;4;\n

最後のセミコロンを削除したいと思います。

4

8 に答える 8

8

他の文字も削除します。

>>> '1;2;3;4;\n'.strip('\n;')
'1;2;3;4'
于 2012-09-24T01:30:38.550 に答える
4
>>> "".join("1;2;3;4;\n".rpartition(";")[::2])
'1;2;3;4\n'
于 2012-09-24T01:37:47.980 に答える
4

交換してはどうですか?

string1='1;2;3;4;\n'
string2=string1.replace(";\n","\n")
于 2012-09-24T12:28:19.957 に答える
2
>>> string = "1;2;3;4;\n"
>>> string.strip().strip(";")
"1;2;3;4"

これにより、最初に先頭または末尾の空白が削除され、次に先頭または末尾のセミコロンが削除されます。

于 2012-09-24T01:31:44.177 に答える
1

これを試して:

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'

提供されている他の回答は、特定の例に合わせて調整されているため、おそらく高速ですが、これはもう少し柔軟性があります。

于 2012-09-24T01:46:18.073 に答える
1
re.sub(r';(\W*$)', r'\1', '1;2;3;4;\n') -> '1;2;3;4\n'
于 2012-09-24T02:10:54.857 に答える
1

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:]
于 2013-06-08T03:02:00.230 に答える
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, ';')
于 2012-09-24T08:19:57.557 に答える