使python从文件读取为12而不是1和2

时间:2016-10-15 20:33:31

标签: python file for-loop numbers readlines

尝试制作一个为不同阶段提供价格的程序。在“tripss.txt”中,第三行是数字12,python将其解释为1和2,并给出每个的价格而不是数字作为一个整体,任何方式将其修改为它被读为12?。 / p>

infile = open("tripss.txt","r")  
customer_one= infile.readline().strip("\n")     
customer_two= infile.readline().strip("\n")  
customer_three= infile.readline().strip("\n")      
one_to_three_stages="euro 1.55"   
four_to_seven_stages="euro 1.85"   
seven_to_eleven_stages="euro 2.45"  
more_than_eleven_stages="euro 2.85"  
cheapest = ["1","2","3"]       
cheap = ["4","5","6","7"]    
expensive = ["7","8","9","10","11"]     
    for number in customer_three:     
    if number in cheapest:   
        print one_to_three_stages    
    elif number in cheap:     
        print four_to_seven_stages    
    elif number in expensive:    
        print seven_to_eleven_stages   
    else:         
        print more_than_eleven_stages      

2 个答案:

答案 0 :(得分:0)

在您的代码中,您似乎希望将customer_three视为字符串列表。但是在你的代码中它是一个字符串,而不是一个字符串列表,所以for循环迭代字符串的字符(“1”和“2”)。
所以我建议你替换:

customer_three= infile.readline().strip("\n")  

with:

customer_three= infile.readline().strip("\n").split()

答案 1 :(得分:0)

你说第三行是数字12 所以在dplyr::slice之后,customer_three= infile.readline().strip("\n")将是字符串customer_three。如果您随后启动for循环"12",则会为for number in customer_three:分配字符串的每个元素 - 首先是number,然后是"1"

解决方案很简单。 "2"已经拥有了您想要的字符串。完全删除customer_three循环。