输入4时,我的文件有5个项目,该如何解决?

时间:2019-04-12 21:23:01

标签: python python-3.x

因此,我的程序要求用户在文本文件中输入想要输入的任何内容(我将其命名为Chapter14file.txt)。一旦完成,就应该输入“完成”。因此,我创建了一些打印语句以确保一切正常。如果我运行该程序并进入有问题的打印语句(最后一行),它将显示的内容比我输入的内容还要多。如果我在单独的行中输入:

1

2

测试

3

完成

现在我完成了。所以我输入“完成”。它进入打印语句并显示以下内容: ['1','2','Test','3','']

因此,重要的是要知道我负责将用户输入转换为列表。这就是为什么项目放在方括号中。

chapter14file = open ("chapter14file.txt", "w+")

while True:
    user_item = str (input ("Please enter what you would like to be added to chapter14file.txt. Type 'done' when you are finished. ") )
    if user_item.upper() == "DONE":
        break
    else:
        chapter14file.write (user_item + ",")

chapter14file.close()
items_from_file = (open ("chapter14file.txt").read())
items_list = items_from_file.split(",")
items_list_capital = [ elem.upper() for elem in items_list ] #Converts each element of the list to only have capital letters, no lowercase letters. Makes the search case insensitive.
print (items_from_file, items_list, items_list_capital)

预期(与前面的示例一致):['1','2','Test','3']

实际:['1','2','测试','3',']

注意:当我谈论结果时,”具体地说,两个小撇号之间什么都没有。

2 个答案:

答案 0 :(得分:2)

这是问题所在:

chapter14file.write (user_item + ",")

您要将,附加到每个条目。所以最后一个条目看起来像:

a,b,c,

当您使用此字符串并将其在,处分割时,由于最后一个,字符,您将得到一个空字符串。

您可以通过删除最后一个,或剥离空字符串来解决此问题。

答案 1 :(得分:0)

您也可以为“,”保留相同的格式,但是可以为while语句尝试类似的方法: y = 0; 而True:     user_item = str(输入(“(请输入要添加到Chapter14file.txt中的内容。完成后键入'done'。”))

if user_item.upper() == "DONE":
    break
if y>=1:
    chapter14file.write ("," + user_item)    
else:
    chapter14file.write (user_item) 
    y+=1

使用变量y查找第一个值。