繁体   English   中英

Python从字符串中删除字母

[英]Python Removing Letters From a String

这是一项家庭作业。 我只需要轻推一下。

我正在尝试创建一个循环,当字符串超出一定数字时,该字符串中的字母将被删除。

例:

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的字母。

Python中的字符串本身是不可变的-不能更改,不能删除字母。 但是您可以根据您的字符串创建新的字符串对象。 这样做的一种方法是切片

通读Python官方教程的链接部分,直到找到所需的内容。 :)

编辑 :如果您需要使用循环,如注释中所建议,则另一种技术也是可能的:

  1. 创建一个空列表。

  2. 循环遍历索引range(amount)然后将与当前索引相对应的字母添加到列表中。

  3. 使用"".join(my_list)将列表再次连接到字符串。

iterim列表的目的是可以更改列表,而字符串(如前所述)是不可变的。

您是否需要循环执行? 否则,请尝试字符串切片:

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

s = word[0:amount]

无需循环!

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] )。

您可以帮忙切片

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

在Python中很难从字符串中删除字符。 解决给定问题的更好方法是像其他人建议的那样使用切片,或者如果必须使用循环,通过将所需的字符收集到新字符串中,而不是从旧字符串中删除它们,即

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

我想你有两种方法

  1. 创建一个新字符串,将旧字符一一添加,直到达到极限
  2. 使用自身的一部分[:-1]覆盖旧字符串,直到达到极限

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM