在多行字符串中打印一些列

时间:2018-03-01 23:01:39

标签: string python-3.x multiple-columns

有没有办法在多行中的字符串中打印一些列。例如,假设我们有以下字符串:

EXAMPLE1
- -- ---
EXAMPLE2

我只打印列中有'-'的列。所以这种情况的输出应该是:

EAMLE1
------
EAMLE2

我正在考虑拆分字符串并通过使用zip来遍历每一列,并打印那些'-'但不真正知道如何正确使用它的列。 任何想法都会受到欢迎 提前谢谢

1 个答案:

答案 0 :(得分:1)

我们将字符串拆分为行后,我们可以使用zip(*lines)转置列表,获取列,搜索-的列,然后再转置以获取新行。然后我们可以使用str.join来汇总结果。

s = '''\
EXAMPLE1
- -- ---
EXAMPLE2'''
columns = (tup for tup in zip(*s.split('\n')) if any('-' in x for x in tup))
lines = (''.join(line) for line in zip(*columns))
print('\n'.join(lines))

输出:

EAMLE1
------
EAMLE2