深入不出的字符串
字符串是由独立字符组成的一个序列,通常包含在单引号(‘’)双引号
(“”)或者三引号之中(‘’’ ‘’'或"“” “”",两者一样),比如下面几种写法。
一些基础概念
name = 'jason'
city = 'beijing'
text = "welcome to jike shijian"
打印出来的结果也就是上面的样子。
这里定义了 name、city 和 text 三个变量,都是字符串类型。我们知道,Python 中单引
号、双引号和三引号的字符串是一模一样的,没有区别,比如下面这个例子中的 s1、s2、
s3 完全一样。
s1 = 'hello'
s2 = "hello"
s3 = """hello"""
s1 == s2 == s3
True
Python 同时支持这三种表达方式,很重要的一个原因就是,这样方便你在字符串中,内嵌
带引号的字符串。比如:
"I'm a student"
Python 的三引号字符串,则主要应用于多行字符串的情境,比如函数的注释等等。
同时,Python 也支持转义字符。所谓的转义字符,就是用反斜杠开头的字符串,来表示一
些特定意义的字符。
下面这是一个简单的例子演示:
s = 'a\nb\tc'
print(s)
输出:
a
b c
这段代码中的’\n’,表示一个字符——换行符;'\t’也表示一个字符——横向制表符。
所以,最后打印出来的输出,就是字符 a,换行,字符 b,然后制表符,最后打印字符 c。
不过要注意,虽然最后打印的输出横跨了两行,但是整个字符串 s 仍然只有 5 个元素。
看:
len(s)
5
一些常用的操作
py的字符串跟Java的字符串差不多, 所以特性都基本类似的.
支持索引,切片和遍历等等操
作。
name = 'jason'
name[0]
'j'
name[1:3]
'as'
和其他数据结构,如列表、元组一样,字符串的索引同样从 0 开始,index=0 表示第一个
元素(字符),[index:index+2] 则表示第 index 个元素到 index+1 个元素组成的子字符
串。
遍历字符串同样很简单,相当于遍历字符串中的每个字符。
for char in name:
print(char)
j
a
s
o
n
Python 的字符串是不可变的(immutable)。
这个跟Java一样. 就不多说的. 你用字符串截取然后替换掉该位置的属性, 都是不支持的.
Python 中字符串的改变,通常只能通过创建新的字符串来完成。比如上述例子中,想
把’hello’的第一个字符’h’,改为大写的’H’,我们可以采用下面的做法:
s = 'H' + s[1:]
s = s.replace('h', 'H')
- 第一种方法,是直接用大写的’H’,通过加号’+'操作符,与原字符串切片操作的子字符
串拼接而成新的字符串。 - 第二种方法,是直接扫描原字符串,把小写的’h’替换成大写的’H’,得到新的字符串。
使用加法操作符’+='的字符串拼接方法。
str1 += str2 # 表示 str1 = str1 + str2
此外,常见的函数还有:
string.strip(str),表示去掉首尾的 str 字符串;
string.lstrip(str),表示只去掉开头的 str 字符串;
string.rstrip(str),表示只去掉尾部的 str 字符串。
python字符串的使用方法, 结合api文档或者源码, 有事半功倍的效果.
平常的学习要记得多查多看多想…
格式化
比如
print('no data available for person with id: {},
name: {}'.format(id, name))
就是相当于按照一个模板类型输出,
其中的 string.format(),就是所谓的格式化函数;而大括号{}就是所谓的格式符,用来为后
面的真实值——变量 name 预留位置。如果id = ‘123’、name=‘jason’,那么输出便
是:
'no data available for person with id: 123,
name: jason'
最后总结一下
总结一下:
- Python 中字符串使用单引号、双引号或三引号表示,三者意义相同,并没有什么区别。
其中,三引号的字符串通常用在多行字符串的场景。 - Python 中字符串是不可变的(前面所讲的新版本 Python 中拼接操作’+='是个例
外)。因此,随意改变字符串中字符的值,是不被允许的。 - Python 新版本(2.5+)中,字符串的拼接变得比以前高效了许多,你可以放心使用。
- Python 中字符串的格式化(string.format)常常用在输出、日志的记录等场景。
ok,那就先这样.