Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python 2.7中,如何从由空格分隔的字符串中提取整数?_Python_Python 2.7 - Fatal编程技术网

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

在Python 2.7中,如何从由空格分隔的字符串中提取整数?,python,python-2.7,Python,Python 2.7,我想从一个字符串中提取整数,该字符串中的整数由空格分隔,即“”。我怎么能那样做 输入 结果: [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,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
def getIt(aStr):
收集=[]
i=0
而我
myIntegers = [int(x) for x in I.split()]    

说明:

I = '1 15 163 132'
I = I.split() 
print(I)
myIntegers = [int(x) for x in I.split()]    
>>> I='bar 1 15 foo 163 132 foo bar'
>>> [int(i) for i in I.split() if i.isdigit()]
[1, 15, 163, 132]

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

s.Split(a)
在出现a的点拆分字符串s,并返回已拆分的子字符串列表

如果未提供参数,例如: s、 拆分() 然后默认使用空格(如空格、制表符、换行符)作为delimeter

具体地说,在您的情况下:

I = '1 15 163 132'
I = I.split() 
print(I)
myIntegers = [int(x) for x in I.split()]    
>>> I='bar 1 15 foo 163 132 foo bar'
>>> [int(i) for i in I.split() if i.isdigit()]
[1, 15, 163, 132]
[“1”、“15”、“163”、“132”]

它创建一个字符串列表,在特定示例中有空格的位置分隔

这是官方的python


现在我们使用所谓的列表理解将列表中的每个元素转换为整数

myNewList = [operation for x in myOtherList]
下面是它正在做的工作的细分:

  • 假设myOtherList是一个列表,包含一些元素
  • 然后我们将一次临时存储一个元素作为x
  • 我们将对myOtherList中的每个元素执行一些操作
  • 假设我们执行的这个操作有一些返回值,
    • 然后返回的值将作为元素存储在我们正在创建的新列表中
  • 最终的结果是,我们将填充一个新的列表myNewList,其长度与MyTherList完全相同
具体地说,在您的情况下:

I = '1 15 163 132'
I = I.split() 
print(I)
myIntegers = [int(x) for x in I.split()]    
>>> I='bar 1 15 foo 163 132 foo bar'
>>> [int(i) for i in I.split() if i.isdigit()]
[1, 15, 163, 132]
执行以下操作:

I = '1 15 163 132'
I = I.split() 
print(I)
myIntegers = [int(x) for x in I.split()]    
>>> I='bar 1 15 foo 163 132 foo bar'
>>> [int(i) for i in I.split() if i.isdigit()]
[1, 15, 163, 132]
  • 我们看到I.split()返回[“1”、“15”、“163”、“132”]
  • 对于每个字符串元素,只需将它们转换为整数即可
  • 并将该整数作为元素存储在新列表中
有关更多信息,请参阅官方python


希望这对你有帮助。

你可以这样做

>>> import re
>>> I='bar 1 15 foo 163 132 foo bar'
>>> [int(i) for i in I.split() if re.match(r'^\d+$', i)]
[1, 15, 163, 132]
不带正则表达式:

I = '1 15 163 132'
I = I.split() 
print(I)
myIntegers = [int(x) for x in I.split()]    
>>> I='bar 1 15 foo 163 132 foo bar'
>>> [int(i) for i in I.split() if i.isdigit()]
[1, 15, 163, 132]
i.isdigit()
仅对仅包含数字的字符串返回true

import re
x="1 15 163 132"
print re.findall(r"[+-]?\d+(?:\.\d+)?",x)
如果你只有正整数,你可以简单地做

print re.findall(r"\d+",x)

[1, 15, 163, 132]
请尝试以下操作:-

I='1 15 163 132'
map(int, a.split(' '))

提供一个复杂的例子。因为
[int(i)for i in i.split()]
会产生您期望的输出。所以。。。。。。这些答案对你有用吗?如果是,您是否愿意将此帖子标记为“已回答”?如果未提供参数,则默认为使用“”不正确-默认为
None
,根据文档使用空格作为分隔符。。。请看:我的错,谢谢你接过来:)我会进行必要的编辑,这样我就不会再腐蚀任何人了。