Я хотел бы попросить решения по вопросу обработки файлов. Проблема в том, что я пытаюсь распечатать кортежи из текстового файла. Некоторые цифры или тексты будут отсутствовать

Вот мой код

        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 в параллельном положении

Результат должен быть tomato 10 30 tomato 10 20 tomato 1 50 в параллельном положении

Заранее спасибо !

0
jhan 12 Дек 2021 в 11:44
Создается впечатление, что содержимое файлов представляет собой список, разделенный запятыми, но затем вы используете readlines () для их чтения. Они разделены запятыми или разделены новой строкой?
 – 
saquintes
12 Дек 2021 в 11:49
Добро пожаловать в Stack Overflow. Прочтите справку по форматированию и убедитесь, что вы понимаете, как размещать код; затем используйте эту технику, чтобы показать нам вывод терминала и содержимое файла в том виде, в каком они отображаются для вас.
 – 
Karl Knechtel
12 Дек 2021 в 11:50
Привет, они разделены новой строкой.
 – 
jhan
12 Дек 2021 в 11:51
Если файлы выглядят так, как показано, то это не результат, который вы получите
 – 
JCaesar
12 Дек 2021 в 11:52
Это из-за проблемы с форматированием, у меня работает strip ()
 – 
jhan
12 Дек 2021 в 12:00

2 ответа

Лучший ответ

Можно сделать это более компактно:

for e1, e2, e3 in zip(myarray, myarray2, myarray3):
    print(f'{e1.strip():<35}{e2.strip():<11}{e3.strip():>7}')
0
nikeros 12 Дек 2021 в 12:02

Хотя в вашем форматировании есть некоторая двусмысленность, я предполагаю, что строки

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

Предназначены для удаления символов новой строки с конца. Но у последнего элемента нет новой строки, поэтому вы получаете tomot вместо tomoto и ничего не получаете вместо 1. Я бы предложил использовать strip.

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

И посмотрите, работает ли это лучше.

1
saquintes 12 Дек 2021 в 11:52