我试图将嵌套列表中的元素写入文件中的各个行,每个元素由制表符分隔。每个嵌套列表都具有以下形式:
('A', 'B', 'C', 'D')
最终输出应采用以下形式:
A B C D
E F G H
. . . .
. . . .
但是,我的输出似乎具有可重现的不一致性,因此输出具有一般形式:
A B C D
E F G H
I J K L
M N O P
. . . .
. . . .
我在写作之前已经检查了这些列表,它们在形式上看起来相同。我用来编写的代码是:
with open("letters.txt", 'w') as outfile:
outfile.writelines('\t'.join(line) + '\n' for line in letter_list)
重要的是,如果我将'\ t'替换为'|',则创建的文件没有这种不一致。我知道空白解析可能会成为某些文件I / O操作的问题,但我不知道如何解决它。
感谢您的时间。
编辑:这是一些实际输入数据(以嵌套列表形式)和输出:
在
('5', '+', '5752624-5752673', 'alt_region_8161'), ('1', '+', '621461-622139', 'alt_region_67'), ('1', '+', '453907-454063', 'alt_region_60'), ('1', '+', '539611-539815', 'alt_region_61'), ('4', '+', '14610049-14610103', 'alt_region_6893'), ('4', '+', '14610049-14610144', 'alt_region_6895'), ('4', '+', '14610049-14610144', 'alt_region_6897'), ('4', '+', '14610049-14610144', 'alt_region_6896')]
OUT
4 + 12816011-12816087 alt_region_6808
1 + 21214720-21214747 alt_region_2377
4 + 9489968-9490833 alt_region_7382
1 + 12121545-12126263 alt_region_650
4 + 9489968-9490811 alt_region_7381
4 + 12816011-12816087 alt_region_6807
1 + 2032338-2032740 alt_region_157
5 + 4695084-4695628 alt_region_9316
1 + 22294677-22295134 alt_region_2424
1 + 22294677-22295139 alt_region_2425
1 + 22294677-22295139 alt_region_2426
1 + 22294677-22295139 alt_region_2427
1 + 22294677-22295134 alt_region_2422
1 + 22294677-22295134 alt_region_2423
1 + 22294384-22295198 alt_region_2428
1 + 22294384-22295198 alt_region_2429
5 + 20845105-20845211 alt_region_9784
5 + 20845105-20845206 alt_region_9783
3 + 2651447-2651889 alt_region_5562
编辑:感谢所有评论的人。对不起,如果问题措辞不当。我很感谢帮助澄清问题(或者,显然,没有问题)。
答案 0 :(得分:3)
输出中没有空格(' '
),只有标签('\t'
)。
>>> print(repr('1 + 21214720-21214747 alt_region_2377'))
'1\t+\t21214720-21214747\talt_region_2377'
^^ ^^ ^^
标签不等同于固定数量的空格(在大多数编辑器中)。相反,他们会将标签后面的字符移动到左边距的x
字符的下一个可用倍数,其中x
变化 - x
最常见的是8,尽管此处为4 SO。
>>> for i in range(7):
print('x'*i+'\tx')
x
x x
xx x
xxx x
xxxx x
xxxxx x
xxxxxx x
如果您希望的输出与肉眼对齐,则应使用string formatting:
>>> for line in data:
print('{:4} {:4} {:20} {:20}'.format(*line))
5 + 5752624-5752673 alt_region_8161
1 + 621461-622139 alt_region_67
1 + 453907-454063 alt_region_60
1 + 539611-539815 alt_region_61
4 + 14610049-14610103 alt_region_6893
4 + 14610049-14610144 alt_region_6895
4 + 14610049-14610144 alt_region_6897
4 + 14610049-14610144 alt_region_6896
但是,请注意,对于需要使用制表符分隔的值文件的代码,这不一定是可读的。
答案 1 :(得分:1)
在某些文本编辑器中,标签会像这样显示。文件的内容是正确的,只是文件在屏幕上的显示方式。它与标签一起发生但不与|
一起发生,这就是您在使用|
时没有看到它的原因。