Python 里的 String format问题, 我搞不懂这个东西到底是怎么用的。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 里的 String format问题, 我搞不懂这个东西到底是怎么用的。相关的知识,希望对你有一定的参考价值。

比如
>>> '%-*s%*s' % (1,'hello',20,9.3)
>>>hello 9.3

我现在只知道%s就像一个String的切入口,
我现在理解的是
>>>x = raw_input('x= ')
>>>print 'hello, %s!' % x

运行时就是
x = hello
hello, Louis!

========
我不懂得几点和我动的几点
我懂得
1.%s(说过了)
2.%- (代表向左对齐)
以及
”% “(%后面有个空格)

%+
4. 还有些基本的我都懂。
---------------------
我不懂得
1. * (这是干嘛?)
2. %-*s%*s(这个到底是怎么回事, 我从左往右理解,
<1>%-,向左对齐*s?*s也是从外面调进来数字?
<2>%*s????星星在这里是干嘛用的呀?)
说实话主要就是不理解星星

举个例子好了:
'%-*s%*s' % (x, s1, y, s2)
s1左对齐打印,总共要占用x长度,不够的用空格补充,若字符串超出以字符串实际长度为准;
s2没有'-'即按照右对齐,同样方式打印。这里'*'你可以理解为对应x个数的空格占位符吧。

另外,format是保留字,对应header_format建议变量用content_format做变量命名;
打印水果价钱可以用字典,比较简洁:
d = 'Apple':0.4, 'Pears':0.5, 'Cantalopes':1.92, 'Dried Apricots(16)':8,'Prues':12
for k in d.keys():
print content_format % (item_width, k, price_width, d[k])追问

我还有几个问题要问你:问完了我会给你50分。
1.Python怎么生成执行文件?
2.Python的程序怎么加上UI?(User Interface用户界面)
3.Python 3 和 python 2 的变化剧烈吗?我是应该学那一个?
===========================
4*.Python 到底怎么做出一个程序? 比如:游戏?有强大的功能性的(假设做一个PDF转Doc)
===========================
*我需要一个系统的步骤解释 如:1.写程序,和界面连起来,变成可执行文件。

追答

你的问题每一个细说都很大,这里我都点一下吧。
1/python程序转exe常用的有py2exe,具体用法网上有很多,三言两语说的也不全,找一下;
2/python写UI的库,简单的有Tkiner,常用的有PyQt或者wxPython;
3/python 2到3变化很大,主要是取消很多向后兼容的特性,导致好多外部的库无法再使用。我一直在使用python27,具体3的语法没太关注,印象里对初学者来说相差不大。单纯学习可以看3,目前的书上一般会写明不同版本的用法区别;
4/python写程序一样要学习语法,自己写出或者直接运用不同的库(比如前面所说的UI库,游戏的有pygame)来完成过功能;如何和界面连起来:“导入库 ->生成所需的控件对象->将控件与所需的函数映射->主程序循环”不同库的实现方式不同,目前没有像MFC开发所用的VC那样的IDE,所以也无法给出个固定的步骤解释;你随便找个Tkinter/PyQt/wxPython的入门教程看一下就明白。
另外,初学还是一步一步来,python毕竟是一门正式的语言,还没搞明白Python怎么回事就想写综合性的程序,太急于求成。学习方法一般是先弄清语言特性,再针对你的需求学习库的用法。

参考技术A 5.6.2. String Formatting Operations
String and Unicode objects have one unique built-in operation: the % operator (modulo). This is also known as the string formatting or interpolation operator. Given format % values (where format is a string or Unicode object), % conversion specifications in format are replaced with zero or more elements of values. The effect is similar to the using sprintf() in the C language. If format is a Unicode object, or if any of the objects being converted using the %s conversion are Unicode objects, the result will also be a Unicode object.

If format requires a single argument, values may be a single non-tuple object. [4] Otherwise, values must be a tuple with exactly the number of items specified by the format string, or a single mapping object (for example, a dictionary).

A conversion specifier contains two or more characters and has the following components, which must occur in this order:

The '%' character, which marks the start of the specifier.
Mapping key (optional), consisting of a parenthesised sequence of characters (for example, (somename)).
Conversion flags (optional), which affect the result of some conversion types.
Minimum field width (optional). If specified as an '*' (asterisk), the actual width is read from the next element of the tuple in values, and the object to convert comes after the minimum field width and optional precision.
Precision (optional), given as a '.' (dot) followed by the precision. If specified as '*' (an asterisk), the actual width is read from the next element of the tuple in values, and the value to convert comes after the precision.
Length modifier (optional).
Conversion type.

>>> '|%-*s|%*s|' % (10,'hello',20,9.3)
'|hello | 9.3|'
>>>

参考资料:http://docs.python.org/library/stdtypes.html#string-formatting-operations

参考技术B 声明在字符串参数前面需要一个长度参数
例如:
'[%*s]' % (10,'a')
==> '[ a]'

以上是关于Python 里的 String format问题, 我搞不懂这个东西到底是怎么用的。的主要内容,如果未能解决你的问题,请参考以下文章

Python使用string.format添加前导零[重复]

[Python] String Formatting

Python `string.format()`、填充字符和 ANSI 颜色

Python 格式化输出_String Formatting_控制小数点位数

hausaufgabe--python 15- String Format

Python 字符串格式中的位置参数:str.format vs f-string