从文本文档中读取信息

时间:2012-04-30 10:07:01

标签: python import

我刚刚开始编写应该创建,比较和加载文本文件条目的代码。 该计划要求您提供姓名,年龄和身高。然后它将创建一个类似的文本文件:

  

文森特,18190

我已经让这个工作了,但是一旦我关闭它,我无法弄清楚如何将这些信息加载回Python。我想调用load,然后它将加载所有文本文件条目并将其显示为:

  

名称: “姓名”
    年龄:“年龄”
    高度: “高度”

我可以这样做吗?

6 个答案:

答案 0 :(得分:4)

您可以像这样打开以前保存的文本文件

with open('myData.txt') as infp:
   for line in infp:
      # process line
      line = line.rstrip()

(这也将为您关闭文件)

例如,如果文件中每行存储三个项目,则可以编写

      name, age, height = line.split(',')

将值输入变量(假设数据在最初存储时用逗号分隔,没有空格)。然后以您指定的格式生成输出:

      print 'Name:"%s"' %name
      print 'Age:"%s"' %age
      print 'Height:"%s"' %height

正如@pepr所指出的,取决于数据的存储方式(单词和逗号之间的空格),split(',')生成的数据中可能存在前导/尾随空白,在这种情况下,有必要使用strip()来消除任何额外的空白。在显示的数据样本中,情况并非如此,上面的代码应该可以工作。

以下所有内容都包含在一个函数中:

def load(datafile):

   with open(datafile) as infp:
      for line in infp:
         line = line.rstrip()
         name, age, height = line.split(',')
         print 'Name:"%s"' %name
         print 'Age:"%s"' %age
         print 'Height:"%s"' %height

如果您的数据保存在名为“myData.txt”的文件中,请按以下方式调用上述load函数

load('myData.txt')

答案 1 :(得分:2)

data = open('file.txt').read().splitlines()
for line in data:
    person = line.split(',')
    print 'Name:', person[0]
    print 'Age:', person[1]
    print 'Height:', person[2]

答案 2 :(得分:1)

fil=open('file.txt','r')

for line in fil:                  # iterate through the file.txt line by line

  name,age,height=line.rstrip().split(',')     #now after this name='Vincent' and age='18' , height='190'

  print(name,age,height)

输出

vincent 18 190

答案 3 :(得分:0)

另一种方法是使用标准csv模块将文件行读入['Vincent', '18', '190']之类的行。

如果您希望数字为整数(即​​不是字符串),则必须通过int(str_variable)显式转换字符串。

答案 4 :(得分:0)

保存文件后,请使用此文件阅读:

import csv

filename = 'myfile.txt'

# the code that creates
# the file goes here

the_file = csv.reader(open(filename, 'rb'))
for line in the_file:
   # line[0] is Name
   # line[1] is Age
   # line[2] is Height

答案 5 :(得分:0)

这对我有用

f = open('temp.txt', 'r')
for line in f.readlines():
     a,b,c = line.split(',')
     print "Name:%s\nAge:%s\nHeight:%s\n" % (a,b,c)
f.close()

输出

Name:Vincent
Age:18
Size:190