python - 为什么第一个制表符 (\t) 与其他制表符不一致?

标签 python string python-3.x tabs

我做了一个频率分析程序。它为某个字符串返回这个排序的元组:

frequency = [('Z', 110), ('D', 81), ('O', 78), ('V', 69), ('I', 69), ('J', 64), ('C', 58), ('N', 56), ('M', 54), ('Y', 35), ('G', 30), ('P', 27), ('B', 24), ('H', 23), ('X', 23), ('R', 19), ('T', 16), ('W', 15), ('A', 12), ('K', 12), ('F', 8), ('Q', 8), ('E', 2), ('S', 1)]

所以我想打印密文和它的频率。此外,我有一个按英文字母频率排序的字母表(ordered_alphabet = "ETAOINSRHLDCUMFPGWYBVKXJQZ")我想将这些字母中的每一个放在我的密码字母和频率旁边,以帮助我找出密码信可以。

我也是这样的:

for item in frequency:
    print("%s : %s \t \t %s" % (item[0], item[1], ordered_alphabet[frequency.index(item)]))

返回:

Z : 110          E
D : 81       T
O : 78       A
V : 69       O
I : 69       I
J : 64       N
C : 58       S
N : 56       R
M : 54       H
Y : 35       L
G : 30       D
P : 27       C
B : 24       U
H : 23       M
X : 23       F
R : 19       P
T : 16       G
W : 15       W
A : 12       Y
K : 12       B
F : 8        V
Q : 8        K
E : 2        X
S : 1        J

为什么第一个 ordered_letter(E) 与其他有序字母不一致?我对所有字母都使用了 \t

最佳答案

制表不保证对齐,制表符宽度取决于编辑器/终端设置。您可以尝试使用 str.format 来固定最大字段大小并放弃使用制表。仅使用空格进行确定性格式化。

例如(我将 3 硬编码为大小,但您可能希望预先计算最大大小):

print("{} : {:3}   {}" .format (item[0], item[1], ordered_alphabet[frequency.index(item)]))

没有硬编码和最大尺寸计算:

maxdigit = len(str(max(x[1] for x in frequency)))
for item in frequency:
    print("{} : {:{}}   {}" .format (item[0], item[1], maxdigit, ordered_alphabet[frequency.index(item)]))

让我明白

Z : 110   E
D :  81   T
O :  78   A
V :  69   O
I :  69   I
J :  64   N
C :  58   S
N :  56   R
M :  54   H
Y :  35   L
G :  30   D
P :  27   C
B :  24   U
H :  23   M
X :  23   F
R :  19   P
T :  16   G
W :  15   W
A :  12   Y
K :  12   B
F :   8   V
Q :   8   K
E :   2   X
S :   1   J

关于python - 为什么第一个制表符 (\t) 与其他制表符不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023601/

相关文章:

python - Scrapy 好像没有做 DFO

javascript - 使用 Javascript 查找非零数字的最后一个索引

java - 在Java中修剪字符串的正确方法

python - 如何在python中获取兄弟文件夹路径?

python - 调试由 FormRequest.from_response 发送的 header

python - 将变量传递给子流程调用

Python 3 : str(bytes_object) and str(bytes_object, 编码)不一致?

python - 如何使用 Python 检测 Ubuntu/Linux 上仅 USB 和硬盘的插入?

python - django clear() 和 delete() 之间的区别

python - 使用 Numba 时如何指定 'string' 数据类型?