2012-03-25 8 views
-1

どのように私は、%D%dは、Cで raw_inputがPythonのインプット読むフォーマット

は、例えば1 0

私が欲しいその行ですべてを読み込むようにpythonの ことにより、2つの変数に1行に入力した2つの値を読み取ることができますxの1と0のy

答えて

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

醜いですが面白いでしょうか?

5
x, y = map(int, raw_input().split()) 
0

では、行全体を読んで、それを解析するために、正規表現を使用することができます。グループを使って興味のある部分を手に入れましょう。それ以外の場合は、そのようなコントロールが必要ない場合はstring.splitを使用してください。

関連する問題