Как извлечь информацию из txt (RIS) файла в flask - PullRequest
0 голосов
/ 13 апреля 2020

мой файл выглядит в текстовом редакторе следующим образом:

Firstname  - phil
Lastname  - taylor
Birthdayyear  - 1956
Country  - england
END  -

Я сохранил файл в моей python переменной txtFile, и когда я печатаю файл, используя print(txtFile.read()), он выглядит как в консоли:

b'Firstname  - phil\r\nLastname  - taylor\r\nBirthdayyear  - 1956\r\nCountry  - england\r\nEND  - '

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

Так, например, когда я print("His first name is " + firstName) получу в консоли His first name is phil.

Схема txt-файла не всегда одинакова. Такие имена, как "Firstname", "Lastname", "Birthdayyear" и "Country", всегда одинаковы, но не всегда в одном и том же порядке. Возможно, например, «Country» - это первая строка, а «Firstname» - последняя строка.

Я не нашел проблему, которая совпадает с моей в stackoverflow, поэтому возможно кто-то может помочь мне с этой проблемой.

Большое спасибо

1 Ответ

0 голосов
/ 13 апреля 2020

Наконец-то я нашел решение проблемы. Я не знаю, если это лучший способ сделать это, но он работает для меня:

Сначала я просмотрел каждую строку txt-файла и добавил каждую строку в массив. Затем я разделил каждую строку массива, когда в строке было " - ". Это разбивает каждую строку, например, от ["Firstname - phil"] до ["Firstname","phil"], и затем вы можете получить доступ к имени, если вы go пройдете через каждую строку массива и сделаете запрос if: если первый элемент строки равен "Firstname", установите переменную firstName равной второму элементу этой строки. Я не знаю, понятно ли это, но вот как это выглядит в python коде ...: -D

 txtFileToArray = []
 splittedTxtArray = []
 firstName=""

     #go through every line of the text file
     for line in txtFile:

          #put every line at the end of the array txtFileToArray and delete the "b" (binaray) at the beginning of every line
          txtFileToArray.append(line.decode('utf-8'))

    #then go through every line of the array and split every line when there is a "  - " and store the lines in a new array
     for line in txtFileToArray: 

          splittedTxtArray.append(element.split("  - "))

    #then check every line of the splitted array if there is a Firstname at the first position
    for linein splittedTxtArray:

          if(line[0] == "Firstname"):
             firstName= line[1]

Надеюсь, это когда-нибудь поможет вам: -)

...