Python 如何解析文本文件
我的指导书告诉我,我可以通过制表符解析.txt文件,但当我尝试运行e书给我的代码时,Python不喜欢我解析的方式。我还尝试了.split on',that not',我似乎没有访问我用选项卡或','分隔的特定列。我读了整行。但我要将第[0]行和第[1]行分开,请参见下面的代码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
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。。这是有道理的。。在有人因为我把它放错地方而对我大喊大叫之前。或者他们认为这是以前解决的。