2016-05-24 18 views
0

私はPythonのオンラインクラスを取っています。私は2週間これに行ってきました。私は、サンプルテキスト文書の中の数字を見つけるために次のコードを書いています。私が持っている問題は、行間を移動して正規表現を実行し、最初の数字セットを見つけて、その行の残りの数字をスキップし、次の行に移動して、ライン。私のコードは以下の通りです:正規表現の代入

#!/usr/bin/python 

import re 

try: 
    fname = raw_input("Enter file name: ") 
    fh = open(fname) 
except: 
    print 'Invalid Input' 
    quit() 

numlist = list() 

for line in fh: 
    nums = re.findall('[0-9]+',line) 
    if len(nums) < 1 : continue 
    num = int(nums[0]) 
    numlist.append(num) 

print (numlist) 
+0

は、ファイルの内容を投稿できるリストを拡張することができますか?私はあなたが「最初の数字のセットを見つける」と言ったときに、あなたが意味することを混乱させます。 –

答えて

3

明示的にすべての数字が、最初にスキップするように指示されていますintに強要し、extend()を使用して、リスト全体を追加するリスト内包を使用し、代わりに

num = int(nums[0]) 

を。

numlist.extend([int(x) for x in num]) 
+0

ご協力いただきありがとうございます! – Bret

0

問題はnumsにループしていないということですが、唯一numsリスト内の最初の項目を追加します。

これを解決するには、numsを繰り返して各項目を追加する必要があります。

1

すでに述べたように、リスト内の他の数字はすべて破棄し、最初の要素のみを取ります。あなたはintに番号を変換するにはmap機能を使用して、

for line in fh: 
    nums = re.findall('[0-9]+',line) 
    if len(nums) < 1 : continue 
    nums = map(int, nums) 
    numlist.extend(nums)