首页 > 解决方案 > 如何处理下面 sys.argv __name__ 语句中的“,”

问题描述

这是我正在开发的一个小型终端日记应用程序。

预期功能:在终端python3 journal.py whatever note I want to keep, with commas included.中输入“我想保留的任何注释,包括逗号”条目存储在单个单元格的 csv 中。

实际功能:注释“我想保留的任何注释,包括逗号”被拆分为“,”上的多个单元格。这个问题在 multi_stuff 函数中得到了解决,但同样的技术在名称部分的 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))

标签: pythonpython-3.xcsv

解决方案


推荐阅读