Как распечатать несколько строк текста в строке (одна рядом с другой) в Python - PullRequest
0 голосов
/ 07 июня 2018

Итак, если я получил, например:

print("some text\n
    some more text\n
    yet some more text")

и:

print("another some text\n
    another some more text\n
    yet another some more text")

Как можно распечатать их рядом друг с другом, не делая этого:

print("some text         another some text\n
    some more text       another some more text\n
    yet some more text   yet another some more text")

Я не хочу делать то, что я только что показал вам, потому что я буду генерировать больше этих столбцов с различным текстом и значениями, но я хочу, чтобы они были рядом друг с другом с перерывами \n.

Как я могу сделать это в Python?

Ответы [ 3 ]

0 голосов
/ 07 июня 2018
string1 = 'this is a\n string with\n line breaks'
string2 = ' beautiful\n some\n end'

stringcombined = ''.join(list(sum(list(zip(string1.split('\n'), ['\t'+i+'\n' for i in string2.split('\n')])), ()))).replace('\n ','\n')

print(stringcombined)

Выход:

this is a     beautiful
string with   some
line breaks   end

Редактировать:

stringcombined = ''.join(list(sum(list(zip([i+'\n' for i in string1.split('\n')], [i+'\n' for i in string2.split('\n')])), ()))).replace('\n ','\n')

Выход:

this is a
beautiful
string with
some
line breaks
end

Редактировать2:

Для третьегостолбец просто добавьте его внутрь zip

string3 = '#\n#\n#'
stringcombined = ''.join(list(sum(list(zip([i+'\n' for i in string1.split('\n')], [i+'\n' for i in string2.split('\n')], [i+'\n' for i in string3.split('\n')])), ()))).replace('\n ','\n')

Вывод:

this is a
beautiful
#
string with
some
#
line breaks
end
#
0 голосов
/ 07 июня 2018

Посмотрите на этот пример:

a = ["some text", 'some more text', 'yet some more text']
b = ["another some text", "another some more text", "yet another some more text"]
c = ["third text 1", "third text 2", "third text 3"]

print('\n'.join(a))
print('\n'.join(b))

# COMBINED MAGIC:
print('\n'.join(map(lambda x: ('{:30}'*len(x)).format(*x).strip(), zip(a, b, c))))

Первые два отпечатка равны вашему.Что касается последнего, шаг за шагом:

  1. zip N (в данном случае N = 3) списки со строками в один, где каждый элемент является кортежем соответствующих элементов из a,b, c списки
  2. Для каждого кортежа мы создаем шаблон форматера, используя длину каждого кортежа.
  3. Передача неупакованного кортежа в функцию format
  4. Присоединение с помощьюсимвол новой строки
  5. Печать

Вывод из последнего вызова печати:

some text                     another some text             third text 1
some more text                another some more text        third text 2
yet some more text            yet another some more text    third text 3
0 голосов
/ 07 июня 2018

Простой способ сделать это - перебрать списки строк следующим образом:

column_1 = ["some text", "some more text", "yet some more text"]
column_2 = ["another some text", "another some more text", "yet another some more text"]

for i in range(0, len(column_1 )):
    print("{}\t{}".format(column_1[i], column_2[i]))

Если длина обоих столбцов, конечно, одинакова.Вы можете быть хитрее с табуляторами, если хотите выровнять их лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...