文字列から最初のx文字を削除しますか?


116

文字列から最初のx文字を削除するにはどうすればよいですか?たとえば、文字列があった場合lipsum、最初の3文字を削除して結果を取得するにはどうすればよいでしょうsumか。


5
削除された文字数が残っている文字数と等しくない場合のより良い例。例"lipsumm"[3:] == "summ"
Scott Pelak

回答:



16

別の方法(実際のニーズに応じて):最初のn文字をポップし、ポップした文字と変更した文字列の両方を保存する場合:

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum

3
それは比喩的に「ポップ」されていると思いますが、実際には2つの異なるスライスであり、実際のポップはありません
jamylak

9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'

11
これはコードが長くなり、置換する前に部分文字列を検索する必要があるため、時間がかかることに注意してください。また:>>> x = 'liplip' >>> x.replace(x[:3], '') ''。確かに、3番目のパラメーター(count)= 1にすることでこれを修正できますが、それでもまだ時間がかかります。
jamylak 2012

いやそれはあなたの答えに関連しているので、ここに属しています。count = 1を追加して、引き続き機能するようにすることができます
jamylak

4

を使用しdelます。

例:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'

1
これはあなたが思うようには機能しません。text = 'liplip' >>> text.lstrip(text[:3]) ''なぜなら、chars引数はプレフィックスではないからです。むしろ、その値のすべての組み合わせが取り除かれています。str.lstrip([chars])
jamylak

@jamylak Edited mine
U10-Forward

1
どちらのソリューションも機能しません。のために'liplip'。二一TypeError: 'str' object does not support item deletion
jamylak

@jamylak再び編集
U10-Forward

@jamylakは機能しますか?
U10転送、

2

アカウント番号の下3桁を表示する例。

x = '1234567890'   
x.replace(x[:7], '')

o/p: '890'

これには、tkbxによる回答と同じ問題があります
jamylak

例えば。 >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
jamylak 2018

また、これでも質問の答えにはなりません。文字をx削除するのではなく、sに置き換えます
jamylak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.