repr() → convert a data into a string form that can be read back into Python or for eval()str() → convert into a string in a human readable form.# -*- coding: utf-8 -*- # python ss = [3, 4, 3.123456789012345678901234567890, (7, 8, "9")] print (str(ss)) # [3, 4, 3.1234567890123457, (7, 8, '9')] print (repr(ss)) # [3, 4, 3.1234567890123457, (7, 8, '9')]
The “print” function itself supports string formatting in the style of C's printf.
#-*- coding: utf-8 -*- # python # integer print "%d" % (1234) # 「1234」 # padding by space print "%4d" % (12) # 「 12」 # float. 2 integer, 4 decimal print "%2.4f" % (3.123456789) # 「3.1235」 # string. print "%5s" % ("cats") # 「 cats」 print "%2s" % ("cats") # 「cats」 print "%2d◇%6d◇%2.4f◇%s" % (1234, 5678, 3.123456789, 'cats!') # 「1234◇ 5678◇3.1235◇cats!」
A better style to format is to use ‹string›.format(…).
# -*- coding: utf-8 -*- # python # “:s” is for string print "{:s}".format("cat") # cat # “:s” is default, and can be omitted. print "{}".format([3, 4]) # [3, 4] # decimal int print "{:d}".format(3) # 3 # binary print "{:b}".format(3) # 11 # hex print "{:x}".format(10) # a # formatting multiple args print "{:d}, {:s}, {:s}".format(3, "cat", [7, 8]) # use {{}} to include literal {} print "brace {{}}, a is {}".format(3) # brace {}, a is 3
You can refer to the argument and change print order.
# -*- coding: utf-8 -*- # python print "{0:d}, {1:s}, {2:s}".format(3, "cat", [7, 8]) # 3, cat, [7, 8] print "{1:s}, {0:d}, {2:s}".format(3, "cat", [7, 8]) # cat, 3, [7, 8]
To print without the newline char added at the end, add a comma. Example:
# -*- coding: utf-8 -*- # python print "rabbit", # suppress printing newline print "tiger" # prints 「rabbit tiger」
Or, use “sys.stdout.write”. Example:
# -*- coding: utf-8 -*- # python import sys sys.stdout.write("rabbit") sys.stdout.write("tiger") # output: 「rabbittiger」
See also: Python 3: Formatting String
In Ruby, you can use any of {p, puts, print} to print.
You can embed variables or any Ruby code, like this:
# -*- coding: utf-8 -*- # ruby aa = 3 puts "#{aa} tigers" # 「3 tigers」 puts "#{3 + 4} tigers" # 「7 tigers」
Ruby also support the C style sprintf. Example:
#-*- coding: utf-8 -*- # ruby # integer puts '%d' % 1234 # 「1234」 # padding by space puts '%4d' % 12 # 「 12」 # float. 2 integer, 4 decimal puts '%2.4f' % 3.123456789 # 「3.1235」 # string. puts '%5s' % 'cats' # 「 cats」 puts '%2s' % 'cats' # 「cats」 puts '%2d◇%6d◇%2.4f◇%s' % [1234, 5678, 3.123456789, 'cats!'] # 「1234◇ 5678◇3.1235◇cats!」
What's the difference between {“puts”, “p”, “print”}?
puts prints in a human readable form, and adds newline after each argument. For example, string is printed without quotes, array are printed without the brackets or separators.p prints in a technical form. For example, string will include the quotes. This is good for debugging.print is similar to “puts” but does not add newline.In Perl, if you want to print arrays or hashes for later reading into Perl program, you'll need to use “Data::Dumper” module.
#-*- coding: utf-8 -*- # perl use Data::Dumper; $Data::Dumper::Indent = 0; # set it to print in a compact way @ss = (3, 4, 5); %ss = qw(mary 17 jane 18 alice 19); # qw for autoquote, same as ('mary' => 17, 'jane' => 18, 'alice' => 19) print Dumper(\@ss), "\n"; # $VAR1 = [3,4,5]; print Dumper(\%ss), "\n"; # $VAR1 = {'jane' => 18,'alice' => 19,'mary' => 17};
For formatting strings, you can use “sprintf”, which is like other language's “format”.
Or, you can use “printf”, which is equivalent to print sprintf(FORMAT, LIST).
#-*- coding: utf-8 -*- # perl # integer printf '%d', 1234; # 「1234」 print "\n"; # padding by space printf '%4d', 12; # 「 12」 print "\n"; # float. 2 integer, 4 decimal printf '%2.4f', 3.123456789; # 「3.1235」 print "\n"; # string. printf '%5s', 'cats'; # 「 cats」 print "\n"; printf '%2s', 'cats'; # 「cats」 print "\n"; printf ('%2d◇%6d◇%2.4f◇%s', 1234, 5678, 3.1415926, 'cats'); # prints 「1234◇ 5678◇3.1416◇cats」
Thanks to Yuri Khan for a suggetion on Python print.
blog comments powered by Disqus