【问题标题】:Print some columns in multiline string在多行字符串中打印一些列
【发布时间】:2018-03-01 23:01:38
【问题描述】:
有什么方法可以在多行的字符串中打印一些列。例如,假设我们有以下字符串:
EXAMPLE1
- -- ---
EXAMPLE2
我只打印列中有'-' 的列。所以这个案例的输出应该是:
EAMLE1
------
EAMLE2
我正在考虑拆分字符串并使用 zip 遍历每一列,并仅打印具有 '-' 的列,但真的不知道如何正确使用它。
任何想法都会受到欢迎
提前致谢
【问题讨论】:
标签:
string
python-3.x
multiple-columns
【解决方案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