Самодельная функция разделения, которая сохраняет запятые в кавычках и сохраняет кавычки в 2, когда две последовательные кавычки объединяются - PullRequest
3 голосов
/ 25 марта 2020

Когда я запускаю свой код, кажется, что он содержит ошибку, код помогает мне разбить, но держать запятую, но он должен содержать кавычки, если два связаны вместе. Похоже, три кавычки связаны между собой

input

Result = parseCSV('""')
print(Result)

ожидаемый вывод

['"']

фактический вывод

['']

код:

def parseCSV(string):

    results = []
    current = ''
    is_quoted_right_now = False
    in_quotes = False


    for i in range(0, len(string)):
        currentletter = string[i]

        if currentletter == '"':
            if is_quoted_right_now == True:
                if in_quotes == True:
                    current = current + currentletter
                    in_quotes = False 
                else:
                    in_quotes = True

            else:
                is_quoted_right_now = True
                in_quotes = False

        else:

            shouldCheck  = False

            if is_quoted_right_now == True:

                if in_quotes == True:
                    is_quoted_right_now = False
                    in_quotes = False

                    shouldCheck = True

                else:
                    current = current + currentletter

            else:
                shouldCheck = True

            if shouldCheck == True:
                if currentletter == ',':
                    results.append(current)
                    current = ''

                else:
                    current = current +  currentletter

    results.append(current)
    return results

вот несколько тестов и результатов:

Result = parseCSV('","')
print(Result)
#result = [',']

Result = parseCSV('"""')
print(Result)
#result = ["]

Result = parseCSV('hi,i,am,splitting')
print(Result)
#result = ['hi','i','am','splitting']

Result = parseCSV('"hi,I,am,not,splitting"')
print(Result)
#result = ['hi,I,am,not,splitting']

Result = parseCSV('abc, """')
print(Result)
#result = ['abc', '"']

Result = parseCSV('abc, ""')
print(Result)
#result = ['abc','']
#wanted result = ['abc','"']

Как видите, есть только одна проблема, мой папа говорит, что я должен использовать чистый python без модулей, поэтому могу кто-нибудь помочь без использования таких вещей, как регулярное выражение

Спасибо !!

Я бы очень хотел, чтобы кто-то опубликовал пример кода, спасибо !!

...