Python的字符串替换

python中的字符串替换

%的替换法则

可以用如下的方式,对格式进行进一步的控制:
%[(name)][flags][width].[precision]typecode

(name)为命名

flags可以有+,-,' '0+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

width表示显示宽度

precision表示小数点后精度

1
print '%05d' % 812  #00812  5位的数字,不够数字那么就用0补齐,用0补全了不够的位数,超过位数就是替换的字符本身

%r%s的区别

  • %r用rper()方法处理对象
  • %s用str()方法处理对象

%r打印时能够重现它所代表的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
print("hello,world. %s" % 22)
print("hello,world. %r" % 22)

print("hello, str. %s" % 'just test')
print("hello, str. %r" % 'just test')

import datetime
d = datetime.date.today()
print("%s" % d)
print("%r" % d)

### results:
hello,world. 22
hello,world. 22
hello, str. just test
hello, str. 'just test'
2018-05-22
datetime.date(2018, 5, 22)

format 和 %s 格式化字符串

format方法更加优秀,使用的范围更广,更彻底

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))

# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
```

# python中的恢复原数据的类型
> ast.literal_eval()

```python
In [1]: import ast

In [2]: a='[1,2,3]'

In [3]: ast.literal_eval(a)
Out[3]: [1, 2, 3]

注意 相较于eval而言,该方法会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算