Когато стартирам кода си, изглежда, че има грешка, кодът ми помага да разделя, но да запазя запетая, но трябва да запази цитат, ако две са свързани заедно. Изглежда има три цитата, свързани заедно
вход
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 без модули, така че може ли някой да помогне, без да използва неща като regex
Благодаря!!
Наистина бих искал някой да публикува примерен код, благодаря!!
'"hi,I,am,not,splitting'
?['"h',...]
? 4) използвате ли единични тестове? рискът при ръчните тестове с този тип задачи е, че като решиш 1 случай, да речем последния си, разбиваш други. този риск винаги ще съществува, но вие искате да знаете за него веднага - а това означава автоматизирани тестове. има библиотеки за това, можете ли да ги използвате? - person JL Peyret   schedule 25.03.2020dataexp
. можете лесно да заредите вашите въведени данни, заедно с вашите желания. 5) държавните машини са един от начините да се подходи към проблема с какво-е-моето-текущо-ситуиране, с който се занимавате 6) връщане къмhi i am not splitting
, ако се очаква да се справят с липсващо"
в крайна сметка правилно - моят въпрос #3, отговорът може да бъде известен само след като целият низ бъде сканиран и след това трябва да се върнете назад и да обработите всички,
по различен начин. - person JL Peyret   schedule 25.03.2020,
,"
и всичко останало и след това по някакъв начин да класифицирате състоянието на целия низ. не казвам, че е начинът, но бих помислил за това. 7) причината да не получавате твърде много отговори е, че това е нетривиален проблем, който изисква доста работа за покриване на всички случаи. 13 и начинаещ? поздравления за това колко далеч стигате, мнозина биха се затруднили да стигнат толкова далеч. 8) заглавие?.splitting nested quotes and commas without regular expressions
? 9) късмет. 10) използвайтеgit
или подобен, за да ви помогне. - person JL Peyret   schedule 25.03.2020