使用我的解决方案无法完成 METAR 数据列表的输出
Complete output of a list of METAR data not possible with my solution approach
得到了这样的列表data = ['KSFO 072156Z 28020KT 10SM CLR 18/06 A3006 RMK AO2 PK WND 28027/2149 SLP177 T01780061']
并想将其输出到命令行,如下所示:
KSFO 072156Z 28020KT
10SM CLR 18/06
A3006 RMK AO2
PK WND 28027/2149
T01780061
我试过了
x = 0
l = []
for i in data:
x = x + 1
l.append(i)
if x == 3:
print(f"{l[0]}\t\t{l[1]}\t\t{l[2]}")
l = []
x = 0
但问题是这个解决方案忽略了结果。在这个例子中,“T01780061”没有用我的解决方法输出。
如果列表“数据”的长度不能除以 3,我的解决方案将不再有效,或者可以执行但不会输出所有内容,如上例所示
我知道这个问题的解决方案可能非常简单,但我已经尝试了数周但无法提出合理的解决方案
提前致谢
亲切的问候
您可以这样做的一种方法是单独打印每个单词,只需将 end
参数更改为 print
取决于您是否在行尾。例如:
data = ['KSFO 072156Z 28020KT 10SM CLR 18/06 A3006 RMK AO2 PK WND 28027/2149 SLP177 T01780061']
for s in data:
words = s.split()
for i, w in enumerate(words):
print(w, end='\n' if i % 3 == 2 else '\t')
或者,您可以遍历 words
的 range
并打印当前 3 个值的 join
ed 字符串:
for s in data:
words = s.split()
for i in range(0, len(words), 3):
print('\t'.join(words[i:i+3]))
两种情况下的输出都是:
KSFO 072156Z 28020KT
10SM CLR 18/06
A3006 RMK AO2
PK WND 28027/2149
SLP177 T01780061
这似乎可以实现您的需求:
from more_itertools import chunked
data = ['KSFO 072156Z 28020KT 10SM CLR 18/06 A3006 RMK AO2 PK WND 28027/2149 SLP177 T01780061']
for line in chunked(data[0].split(), 3):
print('\t'.join(line))
KSFO 072156Z 28020KT
10SM CLR 18/06
A3006 RMK AO2
PK WND 28027/2149
SLP177 T01780061
(more_itertools
可通过 pip install more-itertools
获得)
得到了这样的列表data = ['KSFO 072156Z 28020KT 10SM CLR 18/06 A3006 RMK AO2 PK WND 28027/2149 SLP177 T01780061']
并想将其输出到命令行,如下所示:
KSFO 072156Z 28020KT
10SM CLR 18/06
A3006 RMK AO2
PK WND 28027/2149
T01780061
我试过了
x = 0
l = []
for i in data:
x = x + 1
l.append(i)
if x == 3:
print(f"{l[0]}\t\t{l[1]}\t\t{l[2]}")
l = []
x = 0
但问题是这个解决方案忽略了结果。在这个例子中,“T01780061”没有用我的解决方法输出。
如果列表“数据”的长度不能除以 3,我的解决方案将不再有效,或者可以执行但不会输出所有内容,如上例所示
我知道这个问题的解决方案可能非常简单,但我已经尝试了数周但无法提出合理的解决方案
提前致谢
亲切的问候
您可以这样做的一种方法是单独打印每个单词,只需将 end
参数更改为 print
取决于您是否在行尾。例如:
data = ['KSFO 072156Z 28020KT 10SM CLR 18/06 A3006 RMK AO2 PK WND 28027/2149 SLP177 T01780061']
for s in data:
words = s.split()
for i, w in enumerate(words):
print(w, end='\n' if i % 3 == 2 else '\t')
或者,您可以遍历 words
的 range
并打印当前 3 个值的 join
ed 字符串:
for s in data:
words = s.split()
for i in range(0, len(words), 3):
print('\t'.join(words[i:i+3]))
两种情况下的输出都是:
KSFO 072156Z 28020KT
10SM CLR 18/06
A3006 RMK AO2
PK WND 28027/2149
SLP177 T01780061
这似乎可以实现您的需求:
from more_itertools import chunked
data = ['KSFO 072156Z 28020KT 10SM CLR 18/06 A3006 RMK AO2 PK WND 28027/2149 SLP177 T01780061']
for line in chunked(data[0].split(), 3):
print('\t'.join(line))
KSFO 072156Z 28020KT
10SM CLR 18/06
A3006 RMK AO2
PK WND 28027/2149
SLP177 T01780061
(more_itertools
可通过 pip install more-itertools
获得)