txt ファイルがあり、Python で txt ファイルを解析する方法を学びたいです。
txt ファイル:
April 2011
05.05.2013 8:30 20:50
(ここでは異なるデータを持つことができます)
このファイルを解析して、すべてのデータを別の変数に入れるにはどうすればよいですか?
出力例:
month = "April 2011"
mydate = "05.05.2013"
time_start = "8:30"
time_stop = "20:50"
txt ファイルがあり、Python で txt ファイルを解析する方法を学びたいです。
txt ファイル:
April 2011
05.05.2013 8:30 20:50
(ここでは異なるデータを持つことができます)
このファイルを解析して、すべてのデータを別の変数に入れるにはどうすればよいですか?
出力例:
month = "April 2011"
mydate = "05.05.2013"
time_start = "8:30"
time_stop = "20:50"
ここで重要なのは、まず入力ファイル形式と、そこから何を求めているかを分析することです。入力データを考えてみましょう:
April 2011
05.05.2013 8:30 20:50
ここには何がありますか?
最初の行には、月と年がスペースで区切られています。"April 2011" を個別の Python ラベル (変数) としてまとめたい場合は、 readlines()メソッドを使用してファイル全体を読み取るだけで、リストの最初の項目が "April 2011" になります。
次の行には、それぞれスペースで区切られた日付と 2 つの時刻の「フィールド」があります。出力要件に従って、これらのそれぞれを個別の Python ラベル (変数) に含める必要があります。したがって、2 行目を読むだけでは十分ではありません。上記の「フィールド」をそれぞれ区切る必要があります。このsplit()
方法はここで役に立ちます。次に例を示します。
>>> s = '05.05.2013 8:30 20:50'
>>> s.split()
['05.05.2013', '8:30', '20:50']
ご覧のとおり、フィールドがリストの項目として分離されました。それらを個別のラベル (または変数) に簡単に割り当てることができるようになりました。
他にどのようなデータがあるかによって、最初にファイルの各行から必要なデータを取得する方法を分析するという同様のアプローチを試みる必要があります。
ファイルa.txt;
April 2011
05.05.2013 8:30 20:50
May 2011
08.05.2013 8:32 21:51
June 2011
05.06.2013 9:30 23:50
September 2011
05.09.2013 18:30 20:50
パイソンコード;
import itertools
my_list = list()
with open('a.txt') as f:
for line1,line2 in itertools.izip_longest(*[f]*2):
mydate, time_start, time_stop = line2.split()
my_list.append({
'month':line1.strip(),
'mydate': mydate,
'time_start': time_start,
'time_stop': time_stop,
})
print(my_list)
with open('file') as f:
tmp = f.read()
tmp2 = f.split('\n')
month = tmp2[0]
tmp = tmp2[1].split(' ')
mydata = tmp[0]
time_start = tmp[1]
time_stop = tmp[2]
with open("Input.txt") as inputFile:
lines = [line for line in inputFile]
month, mydate, time_start, time_stop = [lines[0].strip()] + lines[1].strip().split()
print month, mydate, time_start, time_stop
出力
April 2011 05.05.2013 8:30 20:50