string Format-format ()
Reprint please indicate the source (http://blog.csdn.net/lis_12/article/details/52712994). Common formatting methods
(%s%d) generates a formatted string where S is a formatted string and D is a decimal number;
The format string contains two parts: the normal character and the conversion specifier (see the table below).
Replaces the conversion specifier with a string of elements in a tuple or map;
* * If D is a tuple, it must match the number of conversion specifiers in S;
If D is dict, each conversion specifier must be associated with a valid key name in Dict. * *
conversion specifier, starting with% |
output Format |
D,i |
Decimal |
U |
Unsigned number |
O |
Octal |
X |
hexadecimal or Long integer |
X |
Hexadecimal |
F,e,e |
Floating point numbers |
G,g |
Used when index is less than-4 |
S |
String or any object, a string generated with Str |
R |
Strings generated by the same repr |
3. between the% character and the converted character, the following modifiers can appear, and can only appear in the following order , a key in parentheses, which is used to get the value of the key from the dict, and if no key exists, throws an exception; One or more of the following:
-The left alignment flag, which defaults to the right alignment; +, indicating that the sign should contain a number; 0, with 0来 filling; A number that specifies the minimum automatic width. The converted value is printed in a string of at least this width, and the left padding to the full character Decuan (padding on the right if the-flag is specified);(if the length of the string itself is greater than the specified width, this width is useless). A decimal points for dividing the field width by precision; A number that specifies the maximum number of characters in the string to be printed, the number of digits after the decimal point in the floating-point number, or the minimum digits of the integer;
The
* Replaces numbers in fields of any width. If present, the width will be read from the next item in the tuple; (A little dizzy--it's easy to understand with the following code)
#!/usr/bin/python #-*-Coding:utf-8-*-#1 a = {"name": ' Ljs ', "age":, ' weight ': "Print"% (name) s% (age) d (weigh t) D; "
%a #ljs 22 75; #将已经定义的变量扩展到字符串中 name = ' Ljs ' age = Weight = + R = '% (name) s% (age) d (weight) D; "
%vars () print R #ljs 22 75; The print VARs () #vars () function contains a dictionary of all variables defined at this time #2 and 3 a = ' abc ' b = c = -100 print '%d '% (a,b) #error print " %10s; " %a # ABC; minimum width is 10, width is less than 10, default is right, add space to left until width is ten print "%-10s" %a #abc Minimum width of 10, width is insufficient 10,-for left alignment flag, add space to right until width of print "%+10s;" %a # ABC; string has no symbol, so flag + does not function print "%010s" %a # ABC; not numbers, no padding 0, so flag 0 doesn't work print "%10d." %B # 100, minimum width of 10, less than 10 width, default to right, add space to left until width of print "%-10d;" %b #100 Minimum width of 10, width is insufficient 10,-for left alignment flag, add space to right until width of print "%+10d;" %b # +100, print out the symbol printed "%+10d;" %c #-100; print out a sign printed "%+010D;" %b #+000000100 padding 0 to width #4 5 a = 1.23456 print "%f"%a #1.234560; Print print "%3f"%a #1.234560; The minimum width is 3, ButThe length has exceeded the 3,so normal print "%10f"%a # 1.234560; The minimum width is 10, the width is less than 10, the default is right-aligned, and the left space is added to the width of the print "%.3f"%a #1.235; The number after the decimal point is fine. , 3-bit print "%.10f"%a #1.2345600000 after the decimal point, less than 10 digits, 0 to digits #6 a = 123456.7890123456 print "%*.*F;" 15,5,a) # 123456.78901; The first * is the minimum width, the second * is the precision print "%-*.*f" after the decimal point ( 15,5,a) #123456.78901;
Advanced String Formatting
The format () function of the string that collects any collection of positional and keyword parameters and replaces placeholders in the string with their values;
placeholders with the form {n} (n as integers) will be replaced by the nth parameter of the format () method;
placeholders with the form {name} will be replaced by the parameter named name;
If you want to use the format () output {xx}, you must use {{XX}}}, otherwise you will be unable to find the corresponding parameter value error;
You can specify a format specifier to control the output more precisely.
Add optional format specifier symbols to each placeholder, such as {name:format_spec}. This specifier specifies the column width, decimal position, and alignment.
General format [Fill,align,sign,0,width,.precision,type], each of which is optional. fill: is an optional padding character used to fill blanks , default to spaces; Align, Alignment. <,>,^ is left, right, center aligned , default right-aligned , sign, and values are:
+, all digital signatures should be added to the symbol; -, default value, only sign with negative sign; Spaces, preceded by a positive number plus a space; 0, plus 0 in front of the width to fill the blank before the value with 0来; width, breadth;. Precision, the number of digits of precision; Type, data type, such as D (Integer), S (string), etc.
In some cases, you might just want to format the object's str () or repr () to indicate that you need to bypass the __format__ () method. To do this, you can add a!r or!s specifier before the format specifier, if you do not see the following code.
#!/usr/bin/python #-*-Coding:utf-8-*-' help Str.format (...)
S.format (*args, **kwargs)-> string return a formatted version of S, using the substitutions from args and Kwargs.
The substitutions are identified by braces (' {' and '} '). ' print ' {{a}} '. Format () #{a} print ' {a} '. Format () #error, there is no parameter print "{A}" for a-{ b} ". Format (a = 100,b =) #100 -200 print" {0},{0} ". Format (11,22) #11, one print" {0},{0},{1},{2} ". Format (11,22 , 33) # 11,11,22,33 The number of brackets inside represents the first few parameters print "{0:3d},{1:4s},{1:5s},{2}". Format (One, "a",) # ' 11,a, A, ' print ' {0:=&G T;+011.3F}; ". Format (12.12345) #====+12.123 with = to fill, right alignment, because already filled with =, 0 invalid, width 11, decimal precision after precision 3, type is floating point print "{0:>+011.3f};".
Format (12.12345) #0000 +12.123; A = "test" print "{0:^10}". Format (a) #test print "{0!s:^10}". Format (a) #test print "{0!r:^10}" . Format (a) # ' test ' #通过下标也行 a=[1,2] print ' {0[0]},{0[1]} '. foRmat (a) #1, 2 #对象属性 class Test (object): Def __init__ (self,name,age): Self.name,self.age = Name,age
def __str__ (self): Return ' This boy was {self.name},is {self.age} old '. Format (self=self) def str (self): Return self.__str__ () a = Test (' Lilei ',.) print str (a) #This boy is lilei,is an old print a.str () #This Boy is Lilei,is #format函数单独使用 format (' abc ', ' 10s ') # ' ABC '
In summary, consider the parameters in format () as a normal parameter, which can be used in the string (s) in the S.format ()!!!