在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
,根据文档使用空格作为分隔符。。。请看:我的错,谢谢你接过来:)我会进行必要的编辑,这样我就不会再腐蚀任何人了。