2011-11-19 212 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

賦值是否創建一個循環來切斷一個字符串,直到它匹配或可以在一個操作中完成它?如果你不需要循環,你可以使用數組切片。 –

+0

我需要使用這個循環 編輯:其實它不是很清楚。 我瞭解了列表及其位置,所以我想我也可以使用它。 (對於USE循環沒有說明) – HighAllegiant

+1

被猜測的是,功能在不使用語言功能的方式中往往很有趣。 –

回答

5

Python中的字符串本身是不可變的 - 它不能被改變,字母也不能被刪除。但是你可以根據你的字符串創建新的字符串對象。一種做法是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])。

0

您可能需要從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

我想你有兩種方法

  1. 創建一個新的字符串從舊的字符添加一個接一個,直到你達到你的極限
  2. 利用自身[片覆蓋舊的字符串:-1 ]直到你達到你的極限