Поэтому я разделил файл .txt на список списков (показанный ниже). Однако, когда я пытаюсь запустить print(splitKeyword(keywords[1][0])), чтобы попытаться распечатать первый элемент второго списка / элемента в keywordList, я получаю сообщение об ошибке: NameError: name 'keywordList' is not defined. Как я могу это исправить?
def functionOne(textFile):
textFileVar = open(textFile, 'r')
def splitKeyword(argument):
keywordList = []
for line in argument:
keywordList.append(line.strip().split(','))
return keywordList
splitKeyword(textFileVar)
print(keywordList[1][0])
results = functionOne("text1.txt")
print(results)
Это содержимое text1.txt / textFile / textFileVar
hello,world
123,456
Вот как выглядит keywordList при печати:
[[hello, world], [123, 456]]






Ваш keywordList является локальным для функции splitKeyword(), а не для функции functionOne(). Вот почему вы получаете ошибку NameError.
@CosmicCat Ну, ваша функция splitKeyword () что-то возвращает, так что вы можете использовать этот возврат, верно? Возьмите то, что он возвращает в переменной, и затем используйте эту переменную для его печати.
список ключевых слов - это локальная переменная для функции splitKeyword, которая ее возвращает, поэтому вы можете напрямую использовать эту функцию и сократить код.
def functionOne(textFile):
textFileVar = open(textFile, 'r')
def splitKeyword(argument):
keywordList = []
for line in argument:
keywordList.append(line.strip().split(','))
return keywordList
print(splitKeyword(textFileVar))
results = functionOne("text1.txt")
print(results)
Попробуй это:
def functionOne(textFile):
textFileVar = open(textFile, 'r')
def splitKeyword(argument):
keywordList = []
for line in argument:
keywordList.append(line.strip().split(','))
return keywordList
output = splitKeyword(textFileVar)
print(output[1][0])
return output
results = functionOne("text1.txt")
print(results)
посмотрите на return keywordList в функции splitKeyword. он возвращает значение (keywordList). но в других областях вы не можете получить доступ к этой переменной, поэтому вам нужно где-то ее сохранить.
нужен ли «обратный выход»? когда я удаляю его, я получаю вывод консоли, который я ищу, но слово «None» появляется прямо под ним
Я думаю, это из-за другой строчки вашего кода. но удалите и проверьте, хотите ли вы.
когда я сохраняю возвращаемый результат, я не получаю его, но когда я его удаляю, я не получаю его, вызовет ли это какие-либо проблемы?
это из-за results = functionOne("text1.txt"). return output вернет значение, поэтому results не будет пустым (None), если вы его удалите, ваша функция не будет иметь никаких выходов, поэтому результаты будут None.
вы возвращаетесь из функции, но не ловите. поэтому попробуйте keywordList = splitKeyword (textFileVar), поскольку keywordList является локальным для этой функции.