【问题标题】:Appending select character of a string to list将字符串的选择字符附加到列表
【发布时间】:2016-07-03 18:45:55
【问题描述】:

使用字符串ABCDEFGHIJKLM 我正在尝试实现以下目标:

ABCDEFGHIJKLM
0123456789012

第一个if 语句有效,但else 语句中断:

position.append(str(x[1])) TypeError: 'int' 对象不可下标

这是代码:

number = []
count = 0
for x in range(string):
    if count <= 9:
        number.append(str(x))
    else:
        number.append(str(x[1]))
    count = count+1
number = ''.join(map(str, number))
print(number)

我该如何解决这个问题?

【问题讨论】:

  • 另外,字符串(或python中的任何可索引对象)的第一个字符应该是str(x)[0],而不是str(x)[1])
  • @M.T 我认为 OP 想要第二个字符。
  • 它应该是 str(x)[-1]。所以你得到最后一个字符。这样它就可以使用超过 2 位数字
  • 谢谢大家,Idos 的回答修复了我的语法疏忽。 julivico,绝佳的选择。干杯

标签: python string list char append


【解决方案1】:

通过执行操作

str(x[1])

您正试图对整数 x 执行子字符串,然后 然后 将其转换为字符串。

字符串是字符的容器,子字符串函数允许我们从这个集合中检索一个或多个字符。

整数不是其他对象的容器,因此不属于可下标对象(它没有实现__getitem__() 方法)。我们无法从中检索特定字符。

解决方法是颠倒你的操作顺序——先将整数转换为字符串,然后对其执行子字符串以检索第二个字符。

str(x)[1]

我们可以通过使其仅采用最后一个字符来改进这一点,这样可以容纳大于 99 的数字:

str(x)[-1]

【讨论】:

    【解决方案2】:

    或者你可以这样做并去掉if else 语句......并且适用于任何长度的字符串。

    number = [] for x in range(string): number.append(str(x % 10)) number = ''.join(map(str, number)) print(number)

    【讨论】:

      【解决方案3】:

      您可以根据自己的意愿使用这个hackint(str(s)[1])(str(s)[1])

      >>> s = 12
      >>> int(str(s)[1])
      2
      >>> (str(s)[1])
      '2'
      

      【讨论】:

        猜你喜欢
        • 2012-12-05
        • 2012-09-14
        • 2018-09-13
        • 2022-01-18
        • 2011-10-28
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        相关资源
        最近更新 更多