Python字符串输入问题,涉及空格!
我的输入大概是这样的:
23 + 45 = astart
当我用raw_input()来获取这个输入,然后尝试分割它时,出现了这样的错误:
SyntaxError: invalid syntax
我的代码是这样的:
k=raw_input()
a,b=(str(i) for i in k.split(' + '))
b,c=(str(i) for i in b.split(' = '))
输入总是数字 + 数字 = astar
只是当我输入数字+数字=astar时,我没有得到语法错误……但是当我加上空格时,就会出现语法错误。
5 个回答
1
你可以直接使用:
a, b, c = raw_input().replace('+',' ').replace('=', ' ').split()
或者[编辑补充] - 这里还有一个方法,它可以避免创建额外的中间字符串:
a, b, c = raw_input().split()[::2]
嗯,我刚意识到第二种方法需要空格,所以效果没有那么好。
1
我觉得我可以用一个简单的正则表达式:
# Set up a few regular expressions
parser = re.compile("(\d+)\+(\d+)=(.+)")
spaces = re.compile("\s+")
# Grab input
input = raw_input()
# Remove all whitespace
input = spaces.sub('',input)
# Parse away
num1, num2, result = m.match(input)
2
在测试Python 2.5.2时,只要我在代码和输入中,+ 和 = 两边的空格保持一致,你的代码就能正常运行。
你在代码中似乎在 + 和 = 的两边都有两个空格,但在输入中只有一个空格。此外,你在生成器中不需要使用str(i)。你可以直接用 a, b = k.split(' + ') 这样的方式。
My cut and pastes:
My test script:
print 'Enter input #1:'
k=raw_input()
a,b=(str(i) for i in k.split(' + '))
b,c=(str(i) for i in b.split(' = '))
print 'Here are the resulting values:'
print a
print b
print c
print 'Enter input #2:'
k=raw_input()
a,b=k.split(' + ')
b,c=b.split(' = ')
print 'Here are the resulting values:'
print a
print b
print c
From the interpreter:
>>>
Enter input #1:
23 + 45 = astart
Here are the resulting values:
23
45
astart
Enter input #2:
23 + 45 = astart
Here are the resulting values:
23
45
astart
>>>