Text-Processing
在數字前面添加零
我有一個看起來像這樣的文件,是用 Python 計算的:
1.00000100e+07 1.00000000e+04 1.11000111e+08 1.11000000e+05
現在,我想獲得這樣的東西:
010000010 000010000 111000111 000111000
這個想法是我想添加零以獲得 9 位的固定格式。我編寫的 Python 程式碼給了我二進制數,但為了進一步解碼,我需要這些二進制數有 9 位。我試圖從 Python 以所需的格式獲取它們,但我無法做到這一點。
我希望我的解釋清楚。
更新:
Python程式碼:
#!/usr/bin/env python3 import numpy as np from numpy import genfromtxt import os day = os.environ.get('day') Array = genfromtxt("SUC_diffzeros_"+str(day)+".csv") final = np.zeros(len(Array)) def decimaltobinary(x): for i in range(len(x)): print(x[i]) final[i] = "{0:09b}".format(x[i]) print(final) var = np.column_stack([Array, final]) np.savetxt("SUC_diffzeros_"+str(day)+".csv", var, fmt='%.8e') if __name__ == '__main__': val = Array.astype(int) decimaltobinary(val)
$ awk '{printf "%09.15g\n", $0}' < file 010000010 000010000 111000111 000111000
或者:
$ awk '{printf "%09d\n", $0}' < file 010000010 000010000 111000111 000111000
這也轉換為整數。
1.1
您會看到數字上的差異,例如111000111.9
前者會給出:0000001.1 111000111.9
而後者:
000000001 111000111
另請參閱
awk '{printf "%09.0f\n", $0}'
哪些回合:000000001 111000112
使用Raku(以前稱為 Perl_6)
~$ raku -ne 'put sprintf "%09d", $_;' file
或者
~$ raku -ne 'put sprintf q[%09d], $_;' file
樣本輸入:
1.00000100e+07 1.00000000e+04 1.11000111e+08 1.11000000e+05
樣本輸出:
010000010 000010000 111000111 000111000
根據文件,“這個函式
sprintf
(字面意思。”指令
"%09d"
或q[%09d]
將輸入視為有符號整數(十進制),左填充0
零到9
九位。注意事項:如有必要,
sprintf
還具有#
指令,其中(除其他外),‘前綴(es)非零二進制與“0b”或“0B”’。#
如果您更改 Python 輸出格式,此指令可能很有用(有關詳細資訊,請參閱文件)。