2011-11-19 21 views
0

これは宿題です。私はちょうどナッジが必要です。Python文字列から文字を削除する

文字列が特定の数値を超えたときに文字列が削除されるループを作成しようとしています。

例:

私がこれまでに作った何
Enter Your String: David 
Enter Your Amount: 4 
Returns: Davi 

word = raw_input("Enter your string:") 
amount = raw_input("Enter your amount:") 
word_length = len(word) 

if word_length > amount: 
    for i in range(word_length): 
    if s[i] > amount: 

そして、それはちょうど約限り私が得ているようです。私はword_lengthより大きい位置にある文字を削除するためにどの構文を使用するかについてはあまりよく分かりません。

+0

文字列が一致するまで、または1回の操作で文字列を切り取るためのループを作成する割り当てですか?ループを作成する必要がない場合は、配列スライスを使用できます。 –

+0

私はこのためにループを使用する必要があります 編集:よくその実際には非常に明確ではありません。 私はリストとそのポジションについて学びましたので、私もそれを使うことができました。 (USEループには記載されていません) – HighAllegiant

+1

言語機能を使用しない方法では宿題が面白い傾向があります。 –

答えて

5

Pythonの文字列自体は変更できません。変更することはできませんし、文字を削除することはできません。しかし、あなたの文字列に基づいて新しい文字列オブジェクトを作成することができます。その1つの方法はslicingです。

必要なものが見つかるまで、公式のPythonチュートリアルのリンクセクションを読んでください。 :)

編集:あなたはあなたのコメントで示唆されているように、ループを使用する必要がある場合は、他の手法も可能である:

  1. は空のリストを作成します。

  2. インデックスをループしてインデックス番号range(amount)をループし、現在のインデックスに対応する文字をリストに追加します。

  3. "".join(my_list)を使用してリストを再び文字列に結合します。

iterimリストの目的は、リストを変更できることです。一方、前に述べたように文字列は変更できません。

3

ループで行う必要がありますか?それ以外の場合は、文字列スライスを試してください:

word = raw_input("Enter your string: ") 
amount = int(raw_input("Enter your amount: ")) 

s = word[0:amount] 
2

ループは必要ありません。

word = raw_input("Enter your string:") 
amount = int(raw_input("Enter your amount:")) 

word = word[:amount] 
print word 

最初の手順は、値を読み込み、整数を整数にキャストすることです。 文字列は心臓部の文字のリストなので、それらからサブリストを得ることができます。 Pythonでは、[x:y]という表記法は、区間[x、y]上のリストからサブリストを取得します。 x([:y])を指定しないと、間隔は[0、y]になります。 y([x:])を入力しないと:[x、len(theStr));どちらかを指定しないと([:])、元の文字列が得られます!

ボーナス面白い事実:

[x:y]オペレータが配列添字演算子、[x]の拡張です。ほとんどの言語で、list[x]を呼び出すと、xの要素が得られます。しかし、Pythonでは、よりトラバースのように振る舞います。たとえば、list[-1]はリストの最後の要素を示します。

[x:y:z]オペレータはまた、Zがトラバーサル中に使用するステップ間隔である場合、存在しています。この演算子の便利なケースは、偶数インデックス(list[::2])で要素を取得し、リストを逆にすることです(list[::-1])。あなたはPythonで文字列から文字を削除

word = raw_input("Enter your string:") 
amount = raw_input("Enter your amount:") 
word=word[:int(amount)] #slicing the rest of unwanted characters 
print word 
0

は困難です。他の人が提案してきたように、与えられた問題にアプローチするより良い方法は、スライスのいずれかだろうか、文字を収集することで、ループを使用する必要がある場合には、つまり、古いものから削除するのではなく、新しい文字列に必要

s = raw_input() 
n = int(raw_input()) 
new_s = "" 
for i in range(n): 
    new_s = new_s + s[i] 
0

をスライスの助けを借りること

0

私はあなたがあなたの限界に達するまで、二つのアプローチ

  1. は[自身のスライスを使用して、古い文字列を上書き
  2. 文字に古いから一つずつ追加する新しい文字列を作成してい推測:-1 ]あなたの限界に達するまで
関連する問題