✅dry2kakeiboにprices*item行をサポート
テストデータ
code:dry
1744 ごみ
1215 !研究テーマを紹介するプロジ。ynntとか
1111 2189*水2、どらやき2、マネキンワッフル3、サトウ1、豚肉2、カップ麺1
2189*水2、どらやき2、マネキンワッフル3、サトウ1、豚肉2、カップ麺1
0600 起床
2205 就寝
今
https://gyazo.com/d67541d298a3bc4dbe2e667631858f0e
2189*水2、どらやき2、マネキンワッフル3、サトウ1、豚肉2、カップ麺1
ここでパースエラー
code:py
ret_lines = []
lines = clipboard2lines()
# preprocess
# - 電車::154、194、154 → 0000 154*電車 みたいに変換する.
lines_from_oneliner = []
for line in lines:
if line.find('::') == -1:
continue
caption, prices = line.split('::')
for price in prices.split('、'):
line = '0000 {:}*{:}\n'.format(price, caption) # なぜか改行文字対処してるので行末合わせる
lines_from_oneliner.append(line)
lines.extend(lines_from_oneliner)
for line in lines:
uline = line
if uline.find('*')==-1:
continue
price, itemname = body.split('*')
itemname = itemname:-1 # なぜか改行文字が入っているので... itemname = itemname.split('。', 1)0 price = int(price)
today = todaystr()
……
コード、突貫的で汚くて辛い。。。sta.icon*2
欲しい
全部
code:dry
120、1300、14000、15*電車5
120、1300*電車4
12000*電車3
1200*電車2
120*電車1
0630 120、1300、14000、15*電車5
0630 120、1300*電車4
0630 12000*電車3
0630 1200*電車2
0630 120*電車1
電車::120
電車::120、130
0600 起きた
どうしようかな
とりあえず::はなくす
時刻の有無は……両方欲しいか
日記として時刻も入れたいときは自然に書く
だるいときは書かない
俺はそういうの自然に判断して書く
code:memo
(datetime) (prices)*(item)
datetime判定
pricesとitemのsplit
pricesのsplit
---
table:t
datetime * price
ある ある 単一
ある ある 複数
ある ない - skip
ない ある 単一
ない ある 複数
ない ない - skip
とりあえずprices単一部分まで
code:py
for line in lines:
is_not_priceline = line.find('*')==-1
if is_not_priceline:
continue
# 1234 123*電車
# ^^^^
# 1
#
# 1234 123*電車
# ^
# 2
is_diary_line = line0:4.isnumeric() and line4 == ' ' body = line
if is_diary_line:
……
全部できたかな?
code:py
for line in lines:
is_not_priceline = line.find('*')==-1
if is_not_priceline:
continue
# 1234 154*電車
# ^^^^
# 1
#
# 1234 154*電車
# ^
# 2
#
#
# 1234 154*電車
# ^^^^^^^^^
# ここが欲しい
is_diary_line = line0:4.isnumeric() and line4 == ' ' body = line
if is_diary_line:
prices, itemname = body.split('*')
itemname = itemname:-1 # なぜか改行文字が入っているので... itemname = itemname.split('。', 1)0 # 123、456、789*電車
# ^^^ ^^^ ^^^
# 各々足し合わせる
price = 0
for v in prices.split('、'):
price += int(v)
today = todaystr()
……
input
code:dry
120、1300、14000、15*電車5
120、1300*電車4
12000*電車3
1200*電車2
120*電車1
0630 120、1300、14000、15*電車5
0630 120、1300*電車4
0630 12000*電車3
0630 1200*電車2
0630 120*電車1
電車::120
電車::120、130
0600 起きた
output
code:kkb
| 2021/10/01 | 15435 | 交通費 | 電車5 | |
| 2021/10/01 | 1420 | 交通費 | 電車4 | |
| 2021/10/01 | 12000 | 交通費 | 電車3 | |
| 2021/10/01 | 1200 | 交通費 | 電車2 | |
| 2021/10/01 | 120 | 交通費 | 電車1 | |
| 2021/10/01 | 15435 | 交通費 | 電車5 | |
| 2021/10/01 | 1420 | 交通費 | 電車4 | |
| 2021/10/01 | 12000 | 交通費 | 電車3 | |
| 2021/10/01 | 1200 | 交通費 | 電車2 | |
| 2021/10/01 | 120 | 交通費 | 電車1 | |
| 2021/10/01 | 120 | 交通費 | 電車 | |
| 2021/10/01 | 120 | 交通費 | 電車 | |
| 2021/10/01 | 130 | 交通費 | 電車 | |
ok。ええやんsta.icon*2