将信息从文件导入记录(Python 3.2.1.1)

时间:2017-03-13 19:37:19

标签: python file-handling

我目前正在尝试一些基本的Python。我正在尝试将.txt文档中的4个不同信息导入Python。从那里我将把它全部拆分,添加到记录中。之后,我计划询问用户是否要在记录中添加其他条目。如果是,则允许他们输入所需信息并将其作为新条目保存回文件。

我编写了一段代码,要求用户单独输入每条信息,但每次都输入相同的内容而且非常烦人。它工作得很好,这里是:

names = []
ages = []
years = []
schools = []
Member = [] 

for loop in range(0,2):
    name = input("Please enter a name")

    age = int(input("Please enter an age"))
    while age <= 0 or age >= 100:
        age = int(input("Please re-enter your age, between 0 and 100"))

    year = int(input("Please enter your school year"))
    while year <= 1 or year >= 6:
        year = int(input("Please enter a valid school year, between 1 and 6"))

    school = input("Please enter your school")

    names.append(name)
    ages.append(age)
    years.append(year)
    schools.append(school)

    member = [names[loop], ages[loop], years[loop], schools[loop]]
    Member.append(member)

    Members = [Member]

print(Members)

我遇到的问题是当我尝试输入多个单独的字符串和整数时,我想要添加到不同的数组,如上所述。这是代码:

with open('Record.txt','r') as scores:
    data = scores.readlines()

names = [""]*len(data)
ages = [0]*len(data)
years = [0]*len(data)
schools = [""]*len(data)
Member = []*len(data)

counter = 0

for loop in range(0,len(data)):
    data[loop] = data[loop][0:-1]
    x = data[loop].rfind(",")
    names[loop] = data[loop][:x]
    print(names)
    ages[loop] = int(data[loop][x:])
    years[loop] = int(data[loop][x+1:])
    schools[loop] = data[loop][x+2:]

    member = [names[loop], ages[loop], years[loop], schools[loop]]
    Member.append(member)

我错误(第28行)我得到的是:

  

ValueError:int()的基数为10的无效文字:',Viewforth'

这是我正在阅读的文件(在“Viewforth”之后有一个新行):

  

Harris,16,5,Viewforth

     

Cody,16,5,Viewforth

     

William,16,5,Viewforth

     

Ross,17岁,6岁,Viewforth

为了澄清,我想将第一个逗号之前的所有内容保存到“名称”,将逗号1和2之间的所有内容保存到“年龄”,将2和3之间保存为“年”,将第三个之后的所有内容保存到“学校”。

先谢谢你的帮助,

  • 哈里斯

1 个答案:

答案 0 :(得分:1)

此行中的问题:ages[loop] = int(data[loop][x:]) data[loop][x:]是一个最终为', Viewforth'的字符串,无法转换为int

我不确定你要对所有的字符串切片做什么,但简单地split()用逗号分隔符来获取每行中的项目列表会容易得多。以下内容如下:

items_in_line = line.split(',')
names.append(items_in_line[0])
ages.append(items_in_line[1])
years.append(items_in_line[2])
schools.append(items_in_line[3])