2017-12-20 15 views
2

日付がYYYY-MM-DDTHH:MM:SS.000Zの形式で保存されているテキストファイルが約5000あり、この形式をMM/DDに変更したい/ YYYY HH:MM AM/PM。ファイル内の日付形式を見つけて別のファイル形式に置き換える

私は、各日付形式の前に文字列Closed:があることを知ることができます。

私が動作するようです日付形式を変更するには、以下を使用してきた

def datePrettyPrint(date): 
    d = dateutil.parser.parse(date) 
    return(d.strftime('%m/%d/%Y %I:%M %p')) 

これまでのところ、私は次のようしている:

import fileinput, os 

directory = "/home/ubuntu/workspace/files/" 

for filename in os.listdir(directory): 
    with open(filename, 'r') as file : 
     filedata = file.read() 

    filedata = filedata.replace('Closed: FORMAT1', 'Closed: FORMAT2') 

    with open('file.txt', 'w') as file: 
     file.write(filedata) 

私にはわからない何されどのようにFORMAT1を取ってFORMAT2に変更する。私はここで近くにいるといい。

編集:ファイル内のテキストの例

Subject: Random Text 
Author: Some Name 
Closed: 2014-11-21T17:39:43.000Z 

Here is a message with more text 

それは私が検索と置換しようとしている3行目です。

+0

- >(2)' 'new_date_value'を取得するには、' datePrettyPrint(DATE_VALUE)を呼び出します - >(3) 'filedata.replace(data_value、old_value)'。 (1)については、regexを使って助けてください。あなたのソースファイルを提供できますか? –

答えて

0

正規表現を使用できます。ウェブ上にパターンのライブラリーがあるか、自分で書くことができます。 Pythonの部分は、前方にかなりまっすぐの線に沿って何かである:あなたは(1) `date_value`アウトをgrepをする必要が

import re 
import datetime 
for match in re.findall(mySearchPattern, textToSearch) 
    #convert match to new format 
    datetime_object = datetime.strptime(match, "%Y-%m-%dT%H:%m:%s.000Z") 
    dateNewFormat = datetime_object.strftime("%m/%d/%Y %H:%M %p") 
    #substitute the old date with the new 
    re.sub(match, dateNewFormat, textToSearch) 
+0

私は正規表現で多すぎることはしませんでしたが、これを正しく理解していれば、正規表現を使用して、変更したい日付フォーマットだけを探すでしょう。 –

+0

正規表現は、置換する日付と一致する必要がある検索パターンです。 – ventsyv

+0

YYYY-MM-DDT部分を検証する正規表現は次のとおりです:https://regex101.com/r/mOBRJP/1 – ventsyv

関連する問題