文字列を検索し、文字列に遭遇したときにおそらく別のことを行うスクリプトを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 は実際に最後のループでインデントされていました。ここに入れているときに間違っていました)