Python输入读取格式

时间:2012-03-25 14:02:45

标签: python input format

如何通过python读取在一行中键入两个值到两个变量的两个值 比如c中的%d%d raw_input读取该行中的所有内容

例如1 0

我想要1英寸x和0英寸

3 个答案:

答案 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')

丑陋而有趣,对吧?