如何从烧瓶中的 txt(RIS) 文件中提取信息

我的文件在文本编辑器中看起来如下:


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上的问题相同的问题,所以也许有人可以帮助我解决这个问题。


繁花如伊
浏览 99回答 1
1回答

不负相思意

最后我找到了解决问题的方法。我不知道,这是否是最好的方法,但它对我有用:首先,我浏览了 txt 文件的每一行,并将每一行添加到一个数组中。然后,当行中有 a 时,我拆分了数组的每一"  - "行。例如,将每一行从["Firstname  - phil"]to拆分["Firstname","phil"],然后如果您遍历数组的每一行并发出 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]我希望有一天这可以帮助你:-)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python