0

文字列を検索し、文字列に遭遇したときにおそらく別のことを行うスクリプトをPythonで書いています。

import re, datetime
from datetime import *

f = open(raw_input('Name of file to search: ')

strToSearch = ''

for line in f:
  strToSearch += line

patFinder = re.compile('\d{2}\/\d{2}\/\d{4}\sA\d{3}\sB\d{3}')
findPat1 = re.findall(patFinder, strToSearch)


# search only dates
datFinder = re.compile('\d{2}\/\d{2}\/\d{4}')
findDat = re.findall(datFinder, strToSearch)


nowDate = date.today()

fileLst = open('cels.txt', 'w')
ntrdLst = open('not_ready.txt', 'w')

for i in findPat1:
    for Date in findDat:
        Date = datetime.strptime(Date, '%d/%m/%Y')
        Date = Date.date()
        endDate = Date + timedelta(days=731)

        if endDate < nowDate:
            fileLst.write(i)
        else:
            ntrdLst.write(i)

f.close()
fileLst.close()
ntrdLst.close()

toClose = raw_input('File was modified, press enter to close: ')

したがって、基本的には、日付と数字を含む文字列を検索し、同じリストで日付のみを検索し、日付を変換し、それぞれに 2 年を追加して比較し、日付が今日の日付を超える場合は ntrdLst に、そうでない場合は fileLst に移動します。

私の問題は、同じリスト (i) を複数回書き込み、並べ替えを行わないことです。

私はPythonとプログラミングに非常に慣れていないので、あなたの助けを求めています. 前もって感謝します

編集: - - - - - - - - -

通常の出力はこれでした(日付とifステートメントなし)

27/01/2009 A448 B448 22/10/2001 A434 B434 06/09/2007 A825 B825 06/09/2007 A434 B434 06/05/2010 A826 B826

私が望むのは、date.today() の後の日付が 2016 年 1 月 27 日のように別のファイルに書き込む場合、私が取得し続けるのは、このリストを 30 回印刷するスクリプトであるか、考慮されていない場合ですif ステートメント。

(申し訳ありませんが、if は実際に最後のループでインデントされていました。ここに入れているときに間違っていました)

4

2 に答える 2