我目前正在尝试一些基本的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之间保存为“年”,将第三个之后的所有内容保存到“学校”。
先谢谢你的帮助,
答案 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])