Python 从字符串中删除字母

0 投票
6 回答
7597 浏览
提问于 2025-04-17 06:40

这是一个作业,我只需要一点提示。

我想创建一个循环,让字符串中的字母在超过一定数量时被删除。

举个例子:

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 位置之后的字母。

6 个回答

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, 字符串的长度];如果两个都不提供([:]),你就会得到原来的字符串!

额外有趣的事实:

[x:y]这个操作符是数组下标操作符[x]的扩展。在大多数编程语言中,调用list[x]会返回下标为x的元素。然而在Python中,它的用法更像是遍历。例如,list[-1]会返回列表中的最后一个元素。

还有[x:y:z]这个操作符,其中z是遍历时的步长。这个操作符的有用场景包括获取偶数下标的元素(list[::2]),以及反转列表(list[::-1])。

3

你需要在一个循环里做这个吗?如果不需要的话,可以试试字符串切片:

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

s = word[0:amount]
5

在Python中,字符串是不可变的,也就是说它不能被改变,字母也不能被删除。不过,你可以根据你的字符串创建新的字符串对象。实现这一点的一种方法是切片

可以查看官方Python教程中链接的部分,直到找到你需要的内容。 :)

编辑:如果你需要使用循环,正如你评论中提到的,另一种方法也是可以的:

  1. 创建一个空列表。

  2. 遍历索引 range(amount),将当前索引对应的字母添加到你的列表中。

  3. 使用 "".join(my_list) 将列表重新连接成一个字符串。

使用中间列表的目的是因为列表是可以修改的,而字符串如前所述是不可变的。

撰写回答