Функция, которая, учитывая путь к CSV-файлу и ключевое слово, возвращает номер строки ключевого слова и номер строки следующей пустой строки. - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать функцию, которая, учитывая путь к файлу 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 Ответ

1 голос
/ 09 июля 2020

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

Под if в первом l oop вы можете добавить проверку:

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
...