如何处理下面的sys.argv __name__语句中的','

时间:2018-04-24 16:33:05

标签: python python-3.x csv

这是我正在处理的一个小终端日记应用程序。

预期功能:键入终端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))

0 个答案:

没有答案