Saya sedang memproses file teks yang berisi koordinat x, y, z
1 128 1298039
123388 0 2
....
setiap baris dibatasi menjadi 3 item menggunakan
words = line.split()
Setelah mengolah data, saya perlu menulis kembali koordinat dalam file txt lain sehingga item di setiap kolom disejajarkan dengan benar (serta file input). Setiap baris terdiri dari koordinat
line_new = words[0] + ' ' + words[1] + ' ' words[2].
Apakah ada manipulator seperti std::setw()
dll di C ++ yang memungkinkan untuk mengatur lebar dan perataan?
python
alignment
string-formatting
justik
sumber
sumber
Itu dapat dicapai dengan menggunakan
rjust
:sumber
Anda dapat menyelaraskannya seperti itu:
mana
>
berarti " menyelaraskan ke kanan " dan8
adalah lebar untuk nilai tertentu.Dan inilah buktinya:
Ps.
*line
berartiline
daftar akan dibongkar, jadi.format(*line)
berfungsi sama dengan.format(line[0], line[1], line[2])
(anggapline
adalah daftar dengan hanya tiga elemen).sumber
Saya sangat menikmati interpolasi string literal baru di Python 3.6+:
Referensi: PEP 498 - Interpolasi String Literal
sumber
Berikut ini cara lain cara memformat menggunakan format 'f-string':
Ini akan memberikan output sebagai berikut:
Apa yang Anda lakukan di sini adalah Anda mengatakan bahwa kolom pertama panjangnya 15 karakter dan dibenarkan kiri dan kolom kedua (nilai) panjangnya 10 karakter dan itu dibenarkan benar.
sumber
widths = [15, 10]
f"{'Trades:':<width[0]}{cnt:>width[1]}",
Saya ingin mencapai sth seperti di atas.f"{'Trades:':<{width[0]}}{cnt:>{width[1]}}"
Tabulasi sederhana dari output:
keluaran:
% 10.2f: 10 adalah panjang minimum dan 2 adalah jumlah tempat desimal.
sumber
Untuk melakukannya dengan menggunakan f-string dan dengan kontrol jumlah digit tambahan:
sumber