字符串

一.基本操作:同序列

二.设置字符串的格式
1.元组
>>> str = “Hello, %s. %s enough for ya?”
>>> values = (‘world’, ‘Hot’)
>>> str % values
‘Hello, world. Hot enough for ya ?’

2.模板字符串
>>> from string import Template
>>> temp=Template(‘Hello $who,$words’) #美元符号
>>> temp.substitute(who=’gongel’,words=’good,morning!’)
‘Hello gongel,good,morning!’

3.字符串方法format
①按序匹配
>>> ‘{},{}’.format(‘gonel’,’hello’)
‘gonel,hello’

②乱序匹配(索引)
>>> “{3} {0} {2} {1} {3} {0}”.format(“be”, “not”, “or”, “to”)
‘to be or not to be’

③命名字段
>>> ‘{name} is {value:.2f}’.format(value=3.1415926,name=’π’)#不用按序
‘π is 3.14′

④简化(py3.6)
如果变量与替换字段同名-在字符串前面加上f
>>> from math import e
>>> f’it is {e}’ #也可匹配精度(格式说明)
‘it is 2.718281828459045’

⑤format进阶
*①和③可混用,②和③可混用

*列表的乱入
>>> fullname = [“Alfred”, “Smoketoomuch”]
>>> “Mr {name[1]}”.format(name=fullname)
‘Mr Smoketoomuch’

*模块的乱入
>>> import math
>>> tmpl = “The {mod.__name__} module defines the value {mod.pi} for π”
>>> tmpl.format(mod=math)
‘The math module defines the value 3.141592653589793 for π’

*基本转换
>>> ‘{pi!s} {pi!r} {pi!a}’.format(pi=’π’)
“π ‘π’ ‘\\u03c0′”
s:str字符串版本;r:reprpython表示;a:ascii
或者
>>> ‘the number is {num:f},{num:b}’.format(num=42)#b为二进制表示
‘the number is 42.000000,101010’
更多的类型操作符参考下面:

字符串格式设置中的类型说明符

*宽度、精度和千位分隔符
宽度:
>>> “{num:10}”.format(num=3)
‘ 3’
>>> “{name:10}”.format(name=”Bob”)
‘Bob ‘
#数和字符串对齐方式不同
精度:
>>> “Pi day is {pi:.2f}”.format(pi=pi)
‘Pi day is 3.14’
千位分隔符:逗号
>>> ‘1000000 is {:,}’.format(10**6)
‘1000000 is 1,000,000’

*符号、对齐和用0 填充
>>> ‘{:010.2f}’.format(pi)
‘0000003.14’

#要指定左对齐、右对齐和居中,可分别使用<、>和^。
>>> print(‘{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}’.format(pi))
3.14
3.14
3.14
#填充字符来扩充对齐说明符
>>> ‘{:$^15}’.format(‘gongel’)
‘$$$$gongel$$$$$’

#说明符=,它指定将填充字符放在符号和数字之间
>>> ‘{:=10.2f}’.format(-3.14)
‘- 3.14’

#正数加上符号,可使用说明符+(将其放在对齐说明符后面)
>>> ‘{:+.2f}’.format(3.145)
‘+3.14’

#井号(#)选项
将其放在符号说明符和宽度之间(如果指定了这两种设置)。这个选项将触发另一种转换方式,转换细节随类型而异
>>> “{:b}”.format(42)
‘101010’
>>> “{:#b}”.format(42)#加前缀
‘0b101010′

>>> “{:g}”.format(42)
’42’
>>> “{:#g}”.format(42)#保留小数点后面的0
‘42.0000’

三.字符串方法
1.center
字符串两边填充字符使其居中
>>> ‘gongel’.center(10) #默认空格
‘ gongel ‘
>>> ‘gongel’.center(10,’*’)
‘**gongel**’

2.find
查找字串,找到则返回字串第一个字符的索引,否则返回-1
>>> ‘gongel’.find(‘el’)
4
还可以指定起点或者起点和终点(不包含终点)
>>> ‘gongel’.find(‘el’,0,5)
-1

3.join
与split相反:a.join(b)将a插入b中
>>> a=’12345′
>>> p=’+’
>>> p.join(a)
‘1+2+3+4+5’

4.lower
返回字符串的小写
*词首大写:
①title方法
>>> ‘i am gongel’.title()
‘I Am Gongel’
②模块string中的函数capwords
>>> import string
>>> string.capwords(‘i am gongel’)
‘I Am Gongel’

5.replace
>>> ‘i am gongel’.replace(‘am’,’am not’)
‘i am not gongel’

6.split
拆分字符串:返回字符串列表
>>> ‘1+2+3+4+5’.split(‘+’)
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
注意:如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符等)处进行拆分。

7.strip
删除字符串开头和末尾的字符(不包括中间字符)
>>> ‘*****i am gongel****!!!’.strip(‘!*’) #删除*和!
‘i am gongel’
注意:默认删除空白

8.replace
Python 3.x中maketrans和translate用法
单个字符的替换,不同于replace
>>> table=str.maketrans(‘123′,’GEL’) #内建函数
>>> ‘1 is good,23 is better ‘.translate(table)
‘G is good,EL is better ‘

9.判断字符串是否满足特定条件(同C++)
isalnum、isalpha、isdecimal、isdigit、isidentifier、islower、isnumeric、
isprintable、isspace、istitle、isupper

字符串格式设置中的类型说明符

b 将整数表示为二进制数
c 将整数解读为Unicode码点
d 将整数视为十进制数进行处理,这是整数默认使用的说明符
e 使用科学表示法来表示小数(用e来表示指数)
E 与e相同,但使用E来表示指数
f 将小数表示为定点数
F 与f相同,但对于特殊值(nan和inf),使用大写表示
g 自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数
G 与g相同,但使用大写来表示指数和特殊值
n 与g相同,但插入随区域而异的数字分隔符
o 将整数表示为八进制数
s 保持字符串的格式不变,这是默认用于字符串的说明符
x 将整数表示为十六进制数并使用小写字母
X 与x相同,但使用大写字母
% 将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)

列表

一.列表基本操作
1.修改元素
和数组一样

2.删除元素
del L[下标]

3.给切片赋值
>>> name = list(‘Perl’)
>>> name[1:] = list(‘ython’)
>>> name
[‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]

二.列表方法
1.append
将一个元素附加到列表尾

2.clear
清空列表

3.copy
常规复制(引用),会改变原值:
>>> a = [1, 2, 3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]
复制
>>> a = [1, 2, 3]
>>> b = a.copy()#类似于b=a[:]或者b=list(a)
>>> b[1] = 4
>>> a
[1, 2, 3]
但含子列表也会受到浅复制的影响
>>> a=[1,2,[4,5]]
>>> b=list(a)
>>> b[2][0]=100
>>> a
[1, 2, [100, 5]]#依旧为浅复制

4.count
统计元素在列表中出现的次数
>>> l=[1,2,3,4,4,4,4]
>>> l.count(4)
4

5.extend
将多个值(列表)加到列表的末尾,原来列表会改变(不同于列表拼接)
>>> l=[1,2,3];m=[4,5,6]
>>> l.extend(m)
>>> l
[1, 2, 3, 4, 5, 6]

6.index
返回指定值在列表中第一次出现的索引
>>> knights = [‘We’, ‘are’, ‘the’, ‘knights’, ‘who’, ‘say’, ‘ni’]
>>> knights.index(‘who’)
4

7.insert
>>> numbers = [1, 2, 3, 5, 6, 7]
>>> numbers.insert(3, ‘four’)
>>> numbers
[1, 2, 3, ‘four’, 5, 6, 7]

8.pop
删除列表末尾一个元素,并返回这个元素;无参数或者参数为索引
>>> x = [1, 2, 3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)#删除指定索引对应的元素
1

9.remove #参数为指定元素
删除指定元素

10.reverse
列表逆置;无返回值
>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]

reversed返回迭代器
>>> x = [1, 2, 3]
>>> list(reversed(x))
[3, 2, 1]

11.sort
就地排序;无返回值
>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

sorted有返回值,为列表
>>> x = [4, 6, 2, 1, 7, 9]
>>> y = sorted(x)
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

12.高级排序
可选参数:key和reverse。
key为关键字函数
>>> x = [‘aardvark’, ‘abalone’, ‘acme’, ‘add’, ‘aerate’]
>>> x.sort(key=len)
>>> x
[‘add’, ‘acme’, ‘aerate’, ‘abalone’, ‘aardvark’]

reverse,只需将其指定为一个真值(True或False)
>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]

如何下载FlexPaper中的SWF并转化为PDF

一.FlexPaper介绍:
FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。
另外你也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。

二.进入正题:
以复旦研招网为例:http://www.gsao.fudan.edu.cn/17/a2/c1659a137122/page.htm

方法一:复旦这个网页也太不安全了…
第一步:右键查看源代码,并搜索swf或者pdf

第二步:
直接域名拼接swf源地址或者pdf源地址,即得到源文件(域名访问的目录为根目录)
pdf:http://www.gsao.fudan.edu.cn/_upload/article/files/b3/22/364df0af4a08bd8d38b035031f21/bd31dd66-e0d9-4095-9b50-cf007dfb7bff.pdf

swf:http://www.gsao.fudan.edu.cn/_upload/article/videos/b3/22/364df0af4a08bd8d38b035031f21/bd31dd66-e0d9-4095-9b50-cf007dfb7bff.swf

方法二:
用到的工具有:FVD Downloader浏览器插件,swf2pdf软件

第一步:下载网页swf

第二步:打开swf2pdf转化软件进行转化(太过简单:略)
附上软件链接:链接:https://pan.baidu.com/s/1GXRCUiIsATzg76gb6zzmww 密码:j1ep

注意:直接网页虚拟打印pdf只能转化1页,即不能将swf所有页面全部转化为pdf。