python-字符串

  • 2018-09-20
  • 489
  • 1
# 多行输出结果
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

1. 字符串-str

1.1 可以由单引号或双引号建立

string0 = 'string0 demo.'
string1 = "string1 demo."
print(string0, string1, sep='\n')
string0 demo.
string1 demo.

1.2 格式化字符串

将变量包含进字符串中
– % 操作符

string2 = '%s demo.' % 'string2'
string3 = 'string%d %s.' % (3, 'demo')
print(string2, string3, sep='\n')  
string2 demo.  
string3 demo.

1.3 print()函数

用help函数查看参数及帮助

help(print)
Help on built-in function print in module builtins:  

print(...)  
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)  
    Prints the values to a stream, or to sys.stdout by default.  
    Optional keyword arguments:  
    file:  a file-like object (stream); defaults to the current sys.stdout.  
    sep:   string inserted between values, default a space.  
    end:   string appended after the last value, default a newline.  
    flush: whether to forcibly flush the stream.  

常用参数:
– sep: 间隔符,如果print()一次接收多组数据那么这两组数据之间的间隔默认是一个空格,当然我们可以通过sep参数进行自定义。
如上例1.1中一次传入 string0, string1, 设置间隔符是回车(\n)。再如下例

print(1, 2, 3)
print(1, 2, 3, sep='*****')
1 2 3
1*****2*****3
  • end: 终止符,默认是回车。
    如下例1,第一条修改end为空,所以第二条print开始的位置就是第一条字符串再加上空字符后的位置
    如下例2,第一条修改end为两个回车,所以第二条print开始的位置就是第一条字符串再加上两个回车后的位置
# 例1
print('string1', end='')
print('string2')
# 例2
print('string1', end='\n\n')
print('string2')
# 例3
print('string1', end='\n*************\n')
print('string2')
string1string2
string1

string2
string1
*************
string2

转义字符

符号 含义
\\\ 反斜杠
\' 单引号
\* 双引号
\n 换行
\t 横向制表符
\r 回车

制表符可以使print的输出文本垂直对齐

print('1\t2\t3\t')
print('100\t200\t300\t')
1   2   3   
100 200 300 

注意: 下面面关于字符串的函数、方法、切片等都不会改变原字符串。如果想引用作用后的则可以将其重新赋值给某个变量。

1.4 字符串常用函数

在此处先阐明函数与方法的区别(来自StackOverflow上Andrew Edgecombe的最佳答案),在后文《函数》可以见到函数的编写,在后文《类》可以见到方法(动态语言python的方法就是成员函数)
– 函数中的数据是显式传递的,而方法是隐式传递传递数据
– 方法可以操作类内部的数据(请记住,对象是类的实例化–类定义了一个数据类型,而对象是该数据类型的一个实例化)

1.4.1 查看字符串的帮助

可以通过help以及dir()(关于dir参见jupyter notebook与python基础命令)查看帮助

# 帮助文档太长,此处省略,可自行查看
help(str)
dir('aaa')

1.4.2 常用函数

  • replace() 替换指定的字符串
s1 = 'abcdefg'
s1.replace('bc', 'qq')
'aqqdefg'
  • len() 获取字符串长度
len('12345')
5
  • int() 字符串转整型.
    类似的还有float(),对应的有str()可将其他类型数据转成字符串类型
int('99')
99
  • 字符与不同编码方式的数值转换
    • ord(ch) 以一个字符(长度为1的字符串)作为参数,返回对应的十进制 ASCII 数值,或者 Unicode 数值
ord('a')
97
  • chr(int) ord函数的配对函数,参数是整数,返回字符
chr(97)
'a'

1.5 字符串常用方法

1.5.1 大小写转换类

  • your_str.title() 以类似人名格式,将首字母和内部间隔符后首字母大写
'aBC DE fgh'.title()
'Abc De Fgh'
  • your_str.upper() 全部转为大写
  • your_str.lower() 全部转为小写

1.5.2 去空白字符

  • your_str.lstrip() 去开头空白字符
  • your_str.rstrip() 去末尾空白字符
  • your_str.strip() 去两头空白字符

1.5.3 拼接

  • sep_str.join(your_str_list) 以 sep_str 为间隔符拼接列表里的字符串
' '.join(['a', 'b'])
gram = b'\xe2\x9d\xa6'.decode('utf-8')  # 完全是为了秀: b'\xe2\x9d\xa6'是此特殊图案的字节码
gram.join(['a', 'b', 'c', '123'])
'a❦b❦c❦123'

1.5.4 拆分

  • your_str.split(sep_str) 以字符串 sep_str 作为分隔符分割字符串 your_str. 结果返回包含分割后元素的列表

1.6 常用运算符

简单介绍字符串中常用的运算符及其作用

1.6.1 算数运算符

字符串只能使用下面两个:
+ 规则: str1 + str2 拼接字符串 str1str2
* 规则: strs * int_n 倍增字符串 strs n次
如下例:

'abc' + '123'
'abc123'
'abc*'  * 5
'abc*abc*abc*'

1.6.2 关系运算符

  • == 比较两个对象是否相等,若相等则返回True
'aassd' == 'asasd'
False

1.6.3 成员运算符

  • in 规则: x in y 若y包含x则返回True
  • not in 与上相反
'ad' in 'asadf'
True

1.6.4 身份运算符

  • is 判断两个标识符是不是引用自一个对象(指向同一内存地址)。x is y 相当于 x == y and id(x) == id(y)
ch1 = 's'
ch2 = 's'
ch1 is ch2
True
s1 = 'asdfghs'
s2 = 'asdfghs'
s1 is s2
True

上面例子 s1s2 为什么内存中指向同一地址,与python的内存机制有关。在后文《参数传递》 2.关于可变对象与不可变对象中略有说明。

s1 = 'asdfgh s'
s2 = 'asdfgh s'
s1 is s2
False

1.7 索引以及切片

strings = '123456789'
# 索引单个
strings[4]  # '5'
# 从第二个元素到第五个,注意被索引的包括左端点,而不包括右端点
strings[2:5]  # '345'
# 前二个元素
strings[:2]  # '12'
# 后三个元素
strings[-3:]  # '789'
# 从第一个元素到第八个,每两个元素取一个
strings[1:8:2]  # '2468'
# 对此字符串的起始到结束区域内的进行逆序
strings[::-2]  # '987654321'
# 对此字符串的后五个进行逆序,每两个取一个
strings[-5::-2]  # '531'
# 第七到第二个,每间隔一个取一个
strings[7:2:-2]  # '864'


# 当最后的步长是负数时,若前面两参数不是默认起始与默认结束,则起始位置应该大于结束位置
# 反例:
strings[2:7:-2]  # 输出是空,正确的应该是strings[7:2:-2],这样才能输出'864'。7 > 2

版权声明: 本网站所有资源采用BY-NC-SA 4.0协议进行授权,转载应当以相同方式注明文章来自:python-字符串 - 一方的天地

评论

    发表评论

    陕ICP备18010914号
    知识共享许可协议
    本作品由一方天地采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资源请尽快联系站长,本站会在24h内删除有争议的资源。 -