Python字符串输入问题,涉及空格!

1 投票
5 回答
4448 浏览
提问于 2025-04-15 12:13

我的输入大概是这样的:

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
>>> 

撰写回答