初歩的な質問で恐縮です.
テキストファイルの中から一部を抽出し,辞書・JSON化を目指していて,その過程でファイル内で読み込まれた文字列を丸ごと三連引用符で囲まれるようにしたいと考えております..
しかし,以下のようなエラーが吐き出されました.
「理想の出力結果」に表記されているような結果を得るべく,原因と解決策をご教示いただけますと幸いです.宜しくお願いします.
エラー
Traceback (most recent call last): File "pyautogui_penta2.py", line 44, in <module> mes = append_one(mes) # 1行追加 File "pyautogui_penta2.py", line 26, in append_one dt = datetime.datetime.strptime( date + ' ' + time, '%Y.%m.%d %H:%M') File "/Users/macuser/downloads/yes/lib/python3.7/_strptime.py", line 577, in _strptime_datetime tt, fraction, gmtoff_fraction = _strptime(data_string, format) File "/Users/macuser/downloads/yes/lib/python3.7/_strptime.py", line 359, in _strptime (data_string, format)) ValueError: time data '"""2020.08.13 23:58' does not match format '%Y.%m.%d %H:%M'
該当のソースコード
python
1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3import datetime 4import json 5 6# テストデータ 7from io import StringIO 8 9with open("test.txt", encoding="utf-8") as f: 10 test = f.read() 11 output = '"""' + test + '"""' 12 # output = """2020.08.13 木曜日 13 # 23:58 ポプ子 えいえい!怒った? 14 # 23:59 ピピ美 怒ってないよ. 15 # 2020.08.14 金曜日 16 # 01:00 天の声 何気ないマンボが 17 # サンバ師匠をきずつけた 18 # 01:30 ポプ子 エサヒィ~スープゥー 19 # ドゥラァァァ~イ!!! 20 # 02:00 ピピ美 しょーがねーだろ赤ちゃんなんだから""" 21 22 23# 1行追加 24def append_one(l): 25 if len(l) > 0: 26 dt = datetime.datetime.strptime( date + ' ' + time, '%Y.%m.%d %H:%M') 27 dt = dt.strftime('%Y-%m-%d %H:%M:%S') 28 ret.append({'time':dt, 'name':name, 'message':''.join(l)}) 29 return [] 30 31ret = [] 32date = time = name = '' 33mes = [] 34for line in StringIO(output): 35 cols = line.split() 36 n_col = len(cols) 37 38 if n_col == 1: # セリフのみ 39 mes.append(cols[0]) # セリフをためる 40 elif n_col == 2: # 日付と曜日 41 mes = append_one(mes) # 1行追加 42 date = cols[0] 43 elif n_col == 3: # 時刻と人物とセリフ 44 mes = append_one(mes) # 1行追加 45 time = cols[0] 46 name = cols[1] 47 mes.append(cols[2]) # セリフを貯める 48 49append_one(mes) # 1行追加 50 51# リスト→辞書 52ret = {i+1:e for i,e in enumerate(ret)} 53 54output = json.dumps(ret, ensure_ascii=False, indent=4) 55print(output)
txt
12020.08.13 木曜日 223:58 ポプ子 えいえい!怒った? 323:59 ピピ美 怒ってないよ. 42020.08.14 金曜日 501:00 天の声 何気ないマンボが 6サンバ師匠をきずつけた 701:30 ポプ子 エサヒィ~スープゥードゥラァァァ~イ!!! 802:00 ピピ美 しょーがねーだろ赤ちゃんなんだから
理想の出力結果
{1:{time:"2020-08-13 23:58:00", name:"ポプ子", message:"えいえい!怒った?"}, 2:{time:"2020-08-13 23:59:00", name:"ピピ美", message:"怒ってないよ."}, 3:{time:"2020-08-14 01:00:00", name:"天の声", message:"何気ないマンボが サンバ師匠をきずつけた"}, 4:{time:"2020-08-14 01:30:00", name:"ポプ子", message:"エサヒィ~スープゥードゥラァァァ~イ!!!"}, 5:{time:"2020-08-14 02:00:00", name:"ピピ美", message:"しょーがねーだろ赤ちゃんなんだから"}}
補足情報(FW/ツールのバージョンなど)
MacOS10.15.4, Python3.7.3, Atom
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/23 07:38
2020/08/23 23:37