这是我正在处理的一个小终端日记应用程序。
预期功能:键入终端python3 journal.py whatever note I want to keep, with commas included.
条目“我要保留的任何注释,包含逗号”将存储在单个单元格中的csv中。
实际功能:注释'我要保留的任何音符,包括逗号'将被分成','上的多个单元格。这个问题在multi_stuff函数中得到了解决,但是相同的技术在 name 部分的sys.argv [1:]中不起作用。
有什么想法吗?
import csv
import sys
import re
import datetime
def record(stuff):
with open('journal.csv', 'a') as f:
f.write(str(datetime.datetime.now())+','+stuff+'\n')
def multi_line():
while True:
multi_stuff = input('Type "Q" to quit. Otherwise, talk to me -> ').lower()
if ',' in multi_stuff:
multi_stuff = multi_stuff.replace(',', '","')
if multi_stuff == 'q':
break
with open('journal.csv', 'a') as f:
f.write(str(datetime.datetime.now())+','+multi_stuff+'\n')
def search():
keyword = input('search term -> ').lower()
regex = r"\b(?=\w)" + re.escape(keyword) + r"\b(?!\w)"
with open('journal.csv', 'r') as csv:
for line in csv:
if re.search(regex, line):
print(line)
if __name__ == '__main__':
if sys.argv[1].lower() == '-s':
search()
elif sys.argv[1].lower() == '-m':
multi_line()
else:
arg = sys.argv[1:]
if ',' in arg:
arg = arg.replace(',', '","')
record(' '.join(arg))
else:
record(' '.join(arg))