将数组拆分为字符串并显示Python

2024-05-13 19:00:49 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我想从bookfile.txt文件并显示其中的信息。到目前为止,我已经打开了文件。我很难把每一行作为arrayBooks的一个对象。你知道吗

我想要arrayBooks[0]=“动物农场,1945152,乔治·奥威尔”

然后,我将使用book1=arrayBooks[0].split(',')将其拆分为其他信息,例如:

  book1[0]="Animal Farm"
  book1[1]=1945
  book1[2]=152
  book1[3]="George Orwell"

所以,当我想找到最短的书时,我可以比较book1[2]到book2[2]和book3[2]这样做。你知道吗

我的主要问题是获取数组中的信息并使其可用。我尝试的任何方法似乎都不起作用,并且在displayAll()函数中出现错误。你知道吗

我使用displayAll()作为控件,因为我觉得如果我可以得到要显示的信息,我就可以使用它。你知道吗


你知道吗bookfile.txt文件地址:

动物农场,1945152,乔治·奥威尔

杀死一只知更鸟,1960324,哈珀李

《傲慢与偏见》,1813279,简·奥斯汀和安娜·昆德伦


 def main():
      print("Welcome!")
      displayBookMenu()
      populateBooks()
      displayAll(populateBooks())

 def displayBookMenu:
      print("\n1: Display All Books")
      print("2: Display Shortest Book")
      print("3: Display Longest Book")
      print("3: Display Oldest Book")
      print("4: Display Newest Book")
      print("0: End")
      choice = int(input("Choice: "))

      if choice == 1:
           displayAll()
      elif choice == 2:
           displayShortest()
      elif choice == 3: 
            displayLongest()
      elif choice == 4: 
           displayOldest()
      elif choice == 5:
           displayNewest()
      elif choice == 0:
           exit()
      else:
           print("Invalid Input")

 def populateBooks():
      fp = open("bookfile.txt", "r")
      return fp.readlines()

 def displayAll(arrayBooks):
      print ("\nAll Books: \n")
      #THIS IS WHERE I GET ERROR vvv
      print arrayBooks[0]


 def displayShortest():

 def displayLongest():

 def displayOldest():

 def displayNewest():


 main()

Tags: 文件txt信息defdisplayprint动物choice
2条回答

试试这个:

lines = [line.strip().split(',') for line in open("books.txt")]

使用列表压缩,您可以将文件读入名为lines的列表,并将文件中的每一行转换为列表列表。你知道吗

以下是我运行时得到的结果:

`lines = [line.strip().split(',') for line in open("books.txt")]

print lines
print lines[2]
print lines [2][1]`
enter code here

[['Animal Farm', '1945', '152', 'George Orwell'], ['To Kill A Mockingbird', '1960', '324', 'Harper Lee'], ['Pride and Prejudice', '1813', '279', 'Jane Austen and Anna Quindlen']]
['Pride and Prejudice', '1813', '279', 'Jane Austen and Anna Quindlen']
1813

现在有许多编辑。在这里。一定要仔细看:

`def displayBookMenu():
      print("\n1: Display All Books")
      print("2: Display Shortest Book")
      print("3: Display Longest Book")
      print("3: Display Oldest Book")
      print("4: Display Newest Book")
      print("0: End")
      choice = int(input("Choice: "))

      if choice == 1:
           displayAll(populateBooks())
      elif choice == 2:
           displayShortest()
      elif choice == 3: 
            displayLongest()
      elif choice == 4: 
           displayOldest()
      elif choice == 5:
           displayNewest()
      elif choice == 0:
           exit()
      else:
           print("Invalid Input")

def populateBooks():
      lines = [line.strip().split(',') for line in open("books.txt")]
      return lines

def displayAll(arrayBooks):
      print ("\nAll Books: \n")
      #THIS IS WHERE I GET ERROR vvv
      for books in arrayBooks:
            for each_entry in books:
                  print each_entry,
            print

def displayShortest():
      pass
def displayLongest():
      pass
def displayOldest():
      pass
def displayNewest():
      pass

def main():
      print("Welcome!")
      displayBookMenu()
      populateBooks()
main()

删除displayBooks(populateBooks()),而将其放在if choice ==1语句中。你知道吗

首先,你有一个错误

def displayBookMenu: #needs ()

你不能读ArrayBooks,因为它不是一个全局(或非局部)变量。我想你在变量范围上有问题。检查此项:Python variable scope error

相关问题 更多 >