如何通过python读取在一行中键入两个值到两个变量的两个值 比如c中的%d%d raw_input读取该行中的所有内容
例如1 0
我想要1英寸x和0英寸
答案 0 :(得分:5)
x, y = map(int, raw_input().split())
答案 1 :(得分:0)
您可以阅读整行并使用正则表达式来解析它。使用组来获取您感兴趣的部分。否则,如果您不需要这样的控件,只需使用string.split。
答案 2 :(得分:0)
使用larsmans的方法已经足够了。如果你真的想要scanf,最重要的是,不想阅读整行。试试这个,但可能会很慢。
import re
import sys
class Pin:
formatDict = {'%d': r'(\d+)', '%f': r'(\d+\.?\d*)'}
def __init__(self, input=sys.stdin):
self.input = input
def scanf(self, format):
# change the C style format to python regex
for a, b in self.formatDict.iteritems():
format = format.replace(a, b)
patt = re.compile('^\\s*%s$'%format, re.M)
buf = ''
matched = 0
while 1:
c = self.input.read(1)
if not c: break
buf += c
g = patt.match(buf)
if g:
# matched, but there may be more to match, so don't break now
matched = 1
matchedGroup = g
elif matched:
# the first unmatch after a match, seek back one char and break now
self.input.seek(-1, 1)
break
if matched:
return tuple(eval(x) for x in matchedGroup.groups())
scanf = Pin(open('in', 'r')).scanf
print scanf('%d %d')
print scanf('%f %f')
丑陋而有趣,对吧?