如何从Python 2.7中用空格分隔的字符串中提取整数?

Aka*_*ngh 4 python python-2.7

我想从一个字符串中提取整数,其中整数由空格分隔,即''.我怎么能这样做?

输入

I='1 15 163 132'
Run Code Online (Sandbox Code Playgroud)

结果:

[1,15,163,132]
Run Code Online (Sandbox Code Playgroud)

所以我写了一个像这样的函数

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
Run Code Online (Sandbox Code Playgroud)

删除条件时代码运行完美

while aStr[i+j]!=' ':# or  (i+j)<=len(aStr)-1:
Run Code Online (Sandbox Code Playgroud)

并在每个输入字符串的末尾放置一个空格.请告知我哪里出错了?

ron*_*est 7

试试这段代码:

myIntegers = [int(x) for x in I.split()]    
Run Code Online (Sandbox Code Playgroud)

说明:


其中s是要拆分的字符串,a是要用作分隔符的字符串.然后:

s.Split(a)
Run Code Online (Sandbox Code Playgroud)

在发生a的那些点处拆分字符串s,并返回已拆分的子字符串列表.

如果没有提供参数,例如:s.Split()则默认使用空格(例如空格,制表符,换行符)作为分隔符.

具体来说,在你的情况下:

I = '1 15 163 132'
I = I.split() 
print(I)
Run Code Online (Sandbox Code Playgroud)

["1","15","163","132"]

它会创建一个字符串列表,在特定示例中有空格的点处分隔.

这是关于字符串split()方法的官方python 文档.


现在我们使用所谓的List Comprehensions列表中的每个元素转换为整数.

myNewList = [operation for x in myOtherList]
Run Code Online (Sandbox Code Playgroud)

以下是它正在做的细分:

  • 假设myOtherList是一个包含一些元素的列表,
  • 然后我们将一次暂存一个元素作为x
  • 我们将对myOtherList中的每个元素执行一些操作
  • 假设我们执行的这个操作有一些返回值,
    • 然后返回的值将作为元素存储在我们正在创建的新列表中
  • 最终结果是我们将填充一个新的列表myNewList,它与myOtherList的长度完全相同

具体来说,在你的情况下:

myIntegers = [int(x) for x in I.split()]    
Run Code Online (Sandbox Code Playgroud)

执行以下操作:

  • 我们看到I.split()返回["1","15","163","132"]
  • 对于每个字符串元素,只需将它们转换为整数即可
  • 并将该整数存储为新列表中的元素.

有关更多信息,请参阅List Comprehensions上的官方python 文档.

希望这对你有所帮助.