我想从字符串中提取整数,其中整数由空格分隔,即“”。我怎么能这么做?
Input
I='1 15 163 132'
Result:
[1,15,163,132]
所以我写了一个像这样的函数
def getIt(aStr):
collect = []
i=0
while i < len(aStr):
print('i = ' + str(i))
if aStr[i]!=' ':
j=0
while aStr[i+j]!=' ' or (i+j)<=len(aStr)-1:
print('j = '+str(j))
j+=1
if i+j==len(aStr):
collect.append(int(aStr[i:i+j-1]))
else:
collect.append(int(aStr[i:i+j]))
i+=j+1
else:
i+=1
return collect
当我删除条件时,代码运行完美
while aStr[i+j]!=' ':# or (i+j)<=len(aStr)-1:
并在每个输入字符串的末尾放置一个空格。请告知我哪里出错了?
试试这个代码:
myIntegers = [int(x) for x in I.split()]
解释:
Where s是您要拆分的字符串,并且a是您要用作分隔符的字符串。然后:
s.Split(a)
分割字符串s,在那些点上a发生,并返回已拆分的子字符串列表。
如果没有提供参数,例如:
s.Split()
那么它默认使用空格(例如空格、制表符、换行符)作为分隔符。
具体来说,在你的情况下:
I = '1 15 163 132'
I = I.split()
print(I)
[“1”、“15”、“163”、“132”]
它创建一个字符串列表,在特定示例中存在空格的那些点处进行分隔。
这是官方的python有关字符串 split() 方法的文档.
现在我们使用所谓的列表推导式将列表中的每个元素转换为整数。
myNewList = [operation for x in myOtherList]
以下是它正在做的事情的细分:
- 假如说我的其他列表是一个包含一定数量元素的列表,
- 那么我们将一次临时存储一个元素x
- 我们将对其中的每个元素执行一些操作我的其他列表
- assuming that this operation we perform has some return value,
- 那么返回的值将作为元素存储在我们正在创建的新列表中
- 最终结果是我们将填充一个新列表我的新列表,其长度与我的其他列表
具体来说,在你的情况下:
myIntegers = [int(x) for x in I.split()]
执行以下操作:
- 我们看到 I.split() 返回 ["1", "15", "163", "132"]
- 对于每个字符串元素,只需将它们转换为整数
- 并将该整数作为元素存储在新列表中。
看官方的python列表推导式的文档了解更多信息。
希望这对您有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)