Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I make a fixed size formatted string in python? [duplicate]

I want to create a formatted string with fixed size with fixed position between fields. An example explains better, here there are clearly 3 distinct fields and the string is a fixed size:

XXX        123   98.00 YYYYY        3    1.00 ZZ          42  123.34 

How can I apply such formatting to a string in python (2.7)?

like image 963
anio Avatar asked May 31 '12 15:05

anio


People also ask

How do you make a string a fixed length in Python?

In Python, strings have a built-in method named ljust . The method lets you pad a string with characters up to a certain length. The ljust method means "left-justify"; this makes sense because your string will be to the left after adjustment up to the specified length.

How do you print a string at a fixed width in Python?

Show activity on this post. def splitter(str): for i in range(1, len(str)): start = str[0:i] end = str[i:] yield (start, end) for split in splitter(end): result = [start] result. extend(split) yield result el =[]; string = "abcd" for b in splitter("abcd"): el.

How do you use %s in Python?

The %s operator is put where the string is to be specified. The number of values you want to append to a string should be equivalent to the number specified in parentheses after the % operator at the end of the string value. The following Python code illustrates the way of performing string formatting.

How do you fix digits in Python?

Format a Floating Number to a Fix Width Using round() Function in Python. We can also use the round() function to fix the numbers of digits after the decimal point. This function limits the number of digits after the decimal point on the input number.


1 Answers

Sure, use the .format method. E.g.,

print('{:10s} {:3d}  {:7.2f}'.format('xxx', 123, 98)) print('{:10s} {:3d}  {:7.2f}'.format('yyyy', 3, 1.0)) print('{:10s} {:3d}  {:7.2f}'.format('zz', 42, 123.34)) 

will print

xxx        123    98.00 yyyy         3     1.00 zz          42   123.34 

You can adjust the field sizes as desired. Note that .format works independently of print to format a string. I just used print to display the strings. Brief explanation:

10s format a string with 10 spaces, left justified by default

3d format an integer reserving 3 spaces, right justified by default

7.2f format a float, reserving 7 spaces, 2 after the decimal point, right justfied by default.

There are many additional options to position/format strings (padding, left/right justify etc), String Formatting Operations will provide more information.

Update for f-string mode. E.g.,

text, number, other_number = 'xxx', 123, 98 print(f'{text:10} {number:3d}  {other_number:7.2f}') 

For right alignment

print(f'{text:>10} {number:3d}  {other_number:7.2f}') 
like image 180
Levon Avatar answered Sep 20 '22 06:09

Levon