Python 如何解析文本文件

Python 如何解析文本文件,python,parsing,text,Python,Parsing,Text,我的指导书告诉我,我可以通过制表符解析.txt文件,但当我尝试运行e书给我的代码时,Python不喜欢我解析的方式。我还尝试了.split on',that not',我似乎没有访问我用选项卡或','分隔的特定列。我读了整行。但我要将第[0]行和第[1]行分开,请参见下面的代码 from ingredients import Ingredient from inventory import Inventory def main(): f = open('food_inv_new.tx

我的指导书告诉我,我可以通过制表符解析.txt文件,但当我尝试运行e书给我的代码时,Python不喜欢我解析的方式。我还尝试了.split on',that not',我似乎没有访问我用选项卡或','分隔的特定列。我读了整行。但我要将第[0]行和第[1]行分开,请参见下面的代码

from ingredients import Ingredient
from inventory import Inventory


def main():
    f = open('food_inv_new.txt')
    lines = f.readlines()
    items = {}
for line in lines:
    line = line.strip('\n')
    line = line.strip('\t')
    item = Ingredient(title=line[0])
    items[item] = line[1]
inventory = Inventory(items)
inventory.print_inventory()

if __name__ == "__main__":
    main()

''' from Inventory class '''
def print_inventory(self):
    for item in self.items:
        print item, "-", self.items[item]

''' from Ingredient class '''
def __init__(self, title, description=''):
    self.title = title
    self.description = description

def  __str__(self):
    return self.title
''' In the .txt file: title is the first field(name of Item)
   description is the number of inventory

'''

我想用你提供的最低限度的信息来回答你

如果您的文件看起来像

lines = ['eggs\t48\n', 'flour(lbs)\t25\n', 'mozz cheese\t10\n', 'tomato sauce\t15\n', 'milk(gal)\t10']
是一个包含5个条目的列表

现在,创建一个字典:

items = {}
items = {'eggs':'48', 'flour(lbs)':'25', ...}
并遍历列表:

for line in lines:
  line = line.rstrip('\n') # Removing only the newline symbol
  split_item = line.split('\t') #Splitting at the '\t'
  items[split_item[0]]=split_item[1] #Setting the dictionary entry
您的输出将是一个字典:

items = {}
items = {'eggs':'48', 'flour(lbs)':'25', ...}

请注意,这些值将是字符串,其中可能需要整数。如果需要的话,您可以进行简单的类型转换来进行更改。

欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。在执行
读取行之后,您能否显示
?在拆分之前删除选项卡,这可能是一个问题。但是我可以在没有看到您输入的情况下猜测。我的输出['eggs\t48\n','Faur(lbs)\t25\n','mozz cheese\t10\n','番茄酱\t15\n','milk(gal)\t10']t-o(line0)m-o(line1)m-I(line2)f-l(line3)e-g(line4)我应该得到每行的项目和数量。我不明白的是。第[0]行是行中的第一个字符,而不是由\t或“,”分隔的第一个值。第[1]行是行中的第二个字符,而不是由\t或“,”分隔的第二个值。我可以指定行中下一个\t字段的长度吗@Dschonithanks Dschoni。。这是有道理的。。在有人因为我把它放错地方而对我大喊大叫之前。或者他们认为这是以前解决的。