代码之家  ›  专栏  ›  技术社区  ›  jhan

如何正确显示两个数字文本文件?

  •  0
  • jhan  · 技术社区  · 4 年前

    这是我的密码

            with open("ingredient.txt", 'r', encoding="utf8") as f1:
                myarray = f1.readlines()
    
            with open("quantity.txt", 'r', encoding="utf8") as f2:
                myarray2 = f2.readlines()  
    
            with open("demand.txt", 'r', encoding="utf8") as f3:
                myarray3 = f3.readlines()
    
    
            for element1,element7,element0 in zip(myarray, myarray2, myarray3):
                element1 = element1[:-1]
                element7 = element7[:-1]
                element0 = element0[:-1]
                print(f'{element1:<35}{element7:<11}{element0:>7}')
    

    文件: demand.txt = 30,20,50 quantity.txt = 10,10,1 ingredient.txt= tomato,tomato,tomato

    我在终端里得到的是 tomato 10 30 tomato 10 20 tomat 5 并列

    结果应该是 番茄1020 tomato 1 50

    提前谢谢!

    2 回复  |  直到 4 年前
        1
  •  1
  •   saquintes    4 年前

    虽然您的格式有一些歧义,但我猜行

    element1 = element1[:-1]
    element7 = element7[:-1]
    element0 = element0[:-1]
    

    是为了去掉结尾的新行。但是最后一个元素没有新行,所以得到的是tomot而不是tomoto,得到的是nothing而不是1。我建议使用 strip

    element1 = element1.strip()
    element7 = element7.strip()
    element0 = element0.strip()
    

    看看是否效果更好。

        2
  •  0
  •   nikeros    4 年前

    您可以采用更紧凑的方式:

    for e1, e2, e3 in zip(myarray, myarray2, myarray3):
        print(f'{e1.strip():<35}{e2.strip():<11}{e3.strip():>7}')