Функция, которая, учитывая путь к CSV-файлу и ключевое слово, возвращает номер строки ключевого слова и номер строки следующей пустой строки.
Я пытаюсь создать функцию, которая, учитывая путь к файлу csv и ключевое слово, может возвращать номер строки ключевого слова и номер строки следующей пустой строки после ключевого слова. В настоящее время код для ключевого слова работает так, как я хочу, но у меня возникают проблемы с обнаружением пустой строки. Вif (row[0] == 0) and (int(reader.line_num) > wordLineNum)
состояние этой части кода никогда не проверяется True
в случаях, когда это должно быть (поэтому я установил значение по умолчанию для blankLineNum
над)
def lineFinder (keyword, path): # returns the line number and next blank line within a csv
# file given a keyword
wordLineNum = 0 #hard coded will remove at some point
blankLineNum = 8 #will remove once function works as intended
csvfile = open(path, 'r')
reader = csv.reader(csvfile)
for row in reader:
if str(keyword) in row:
wordLineNum = int(reader.line_num)
for row in reader:
if (row[0] == 0) and (int(reader.line_num) > wordLineNum):
blankLineNum = int(reader.line_num)
return wordLineNum , blankLineNum
1 ответ
Ваш код найдет последнее ключевое слово в файле. Это могло быть то, что было задумано, просто хотелось отметить, что вы перезаписываете значение каждый раз, когда обнаруживается ключевое слово.
Под if в первом цикле вы можете добавить проверку:
for row in reader:
if str(keyword) in row:
wordLineNum = int(reader.line_num)
if wordLineNum > 0 and row[0] == 0):
blankLineNum = int(reader.line_num)
# Remove the next comment if you want to return the first blank line
# return wordLineNum , blankLineNum
#return the last blank line
return wordLineNum , blankLineNum