Как мне обработать ',' в инструкции 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))

Пожалуйста, покажите ошибочный вывод.

wallyk 24.04.2018 20:54
',' in sys.argv[1:] будет истинным только в том случае, если один из аргументов командной строки состоит исключительно из запятой - другими словами, пробелов с обеих сторон. Возможно, вы захотите сначала выполнить ' '.join(arg), чтобы иметь дело только с одной строкой, а не со списком.
jasonharper 24.04.2018 21:09

Интересная идея. Я попробую.

Josh Bennett 25.04.2018 04:27

`else: arg = '' .join (sys.argv [1:]) if ',' в arg: arg = arg.replace (',', '", "') record (arg) else: record (' '.join (аргумент)) `

Josh Bennett 25.04.2018 05:31

полностью сработало!

Josh Bennett 25.04.2018 05:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
29
0

Другие вопросы по теме