美文网首页
Python 学习日志第五篇(913)

Python 学习日志第五篇(913)

作者: Qin0821 | 来源:发表于2018-08-10 14:33 被阅读0次

字符串

在Python中,字符串是除数字外最重要的数据类型。文件通常被视为大型字符串。

字符串是一种聚合数据结构,这让我们有机会会初探索引和切片——用于从字符串中提取子串的方法。

字符串索引

>>> s = 'apple'
>>> s[0]
'a'
>>> s[1]
'p'
>>> s[4]
'e'

如果索引超出了字符串末尾,将导致“超出范围”错误


IndexError

负数索引

在访问字符串末尾附近的字符方面,Python提供了一种更便利的方式:负数索引。其理念是,沿从右向左,用复数表示字符串中字符的索引:

>>> s = 'apple'
>>> s[-1]
'e'
>>> s[-2]
'l'
>>> s[-5]
'a'

因此字符串最后一个字符为s[-1]。


负数索引的工作原理

使用for循环访问字符

如果需要依次访问字符串的每个字符,for循环可助一臂之力。

下面的程序计算给定字符串的字符编码总和:

def codesum1(s):
    total = 0
    for c in s: 
        total = total + ord(c)
    return total
>>> codesum1('Hi there!')
778

下面是常规字符串索引,请于codesum1进行比较:

def codesum2(s):
    """ Returens the sums of the character codes of s. """
    total = 0
    for i in range(len(s)):
        total = total + ord(s[i])
    return total

这种实现的结果与codesum1相同,但更复杂、可读性更差。

字符

字符串由字符组成,而字符本身实际上是一个非常复杂的问题。所有字符都有对应的字符编码,你可以使用函数ord来熟悉:

>>> ord('a')
97
>>> ord('b')
98
>>> ord('c')
99

字符编码是根据Unicode分配的,而Unicode是一个庞大的编码标准,涵盖了全球各种语言中的符号和字符。

转义字符

为处理空白字符以及其他不可打印的字符,Python使用一种特殊表示法——转义序列(也叫转义字符)。


常见的转义字符

在Python中,表示换行的标准方式是使用字符\n:

>>> print('one\ntow\nthree')
one
tow
three

转义字符是单个字符,为了让Python知道下一个字符是特殊字符,必须使用\,但是计算字符串长度时,并不将\视为额外字符。

字符串切片

>>> food = 'apple pie'
>>> food[0, 5]
'apple'
>>> food[6, 9]
'pie'

获取切片的捷径

如果你省略切片的起始索引,Python将假设它为零;
如果你省略切片的终止索引,Python将假设你要提取到字符串的末尾。

>>> food = 'apple pie'
>>> food[:5]
'apple'
>>> food[6:]
'pie'
>>> food[:]
'apple pie'

下面是一个切片示例,这个函数返回文件名中的扩展名:

def get_ext(fname):
    """ Returns the extension of file
    fname.
    """
    dot = fname.rfind('.')
    if dot == -1:  \# fname 中没有
        return ''
    else: 
        return fname[dot + 1:]
>>> get_ext('hello.text')
'text'
>>> get_ext('pizza.old.py')
'py'

rfind 从右往左查找

测试函数

字符串测试函数

搜索函数

如图所示,在字符串中查找子串的方式有多重。函数index和find之间的差别在于没有找到指定子串时的情形。


字符串搜索函数

改变大小写的函数

Python 提供了各种修改字母大小写的函数,但别忘了,Python绝不会修改字符串:在所有这些函数中,Python都创建并返回一个新字符串。


改变大小写的函数

设置格式的函数

下图列出了字符串格式的函数,它们让你能够美化字符串。


设置字符串格式的函数

字符串format功能非常强大,包含用于设置字符串格式的微型语言。要使用函数format,你需要给他提供变量或值:

>>> '{0} likes {1}'.format('Jack', 'ice cream')
'Jack likes ice cream'

你还可以使用关键字参数的名称:

>>> '{who} {pet} has fleas'.format (pet = 'dog', who = 'my')
'my dog has fleas'

format还可以用于指定字符串间距、将数字转换为字符串等。官方文档: http://docs.python.org/3/library/string.html#format-string-syntax,需要科学上网。

剥除函数

剥除函数用于删除字符串开头或末尾多余的字符,默认情况下,将剥除空白字符;如果制定了一个字符串参数,将剥除该字符串中的字符。


字符串剥除函数

拆分函数

拆分函数将字符串拆分成多个子串,如下图所示。函数partitionrpartition将字符串拆分为3部分:

字符串拆分函数
>>> url = 'www.google.com'
>>> url.partition('.')
('www', '.', 'google.com')
>>> url.rpartition('.')
('www.google', '.', 'com')

函数split以指定字符串为分隔符,将字符串划分为一系列子串。

>>> url = 'www.google.com'
>>> url.split('.')
['www', 'google', 'com']
>>> story = 'A long time ago, a princess ate apple.'
>>> story.split()
['A', 'long', 'time', 'age,', 'a', 'princess', 'ate', 'an', 'apple.']

函数split总是返回一个字符串列表。

替换函数

字符串替换函数

其他函数

其他字符串函数

正则表达式

一些正则表达式运算符

在正则表达式中,可使用圆括号来指出要将运算符用于那个子串。

使用正则表达式匹配字符串

在简单的情况下,正则表达式并不比通常的写法短很多,也不一定更好。然而,随着程序越来越大、越来越复杂,正则表达式的优势就会逐渐显现出来。

假设要识别开头为一个或者多个'ha',末尾为一个或者多个'!',如'haha!'、'ha!!!!'等,使用正则表达式匹配这些字符串很容易:

import re
def is_funny(s):
    return re.match('(ha)+!+', s) != None

相关文章

  • Python 学习日志第五篇(913)

    字符串 在Python中,字符串是除数字外最重要的数据类型。文件通常被视为大型字符串。 字符串是一种聚合数据结构,...

  • Python 中的 logging 模块 学习

    参考资料: Python中的logging模块 python 的日志logging模块学习 python logg...

  • python 日志记录logging模块使用

    最近想在python flask项目中使用日志功能,于是想到了python自带的日志模块logging. 在学习这...

  • 913刘星日志

    今天六点起床,看书二十分钟,上午去武大见了一位领导,联络了一下情感,期间聊到武汉即将有一家超大规模的口腔医院即将开...

  • Python程序打包为exe可执行文件

    这是Python学习笔记系列的第五篇。 欢迎关注零壹研究 【微信号: Research_LAB】 全文约6000字...

  • Python之旅-5

    前言: 本篇文章是《Python之旅》系列的第五篇,在上一篇文章中主要学习了Python 的条件语句。本篇文章主要...

  • 大师兄的Python学习笔记(十): 多进程和多线程

    大师兄的Python学习笔记(九): logging模块与日志大师兄的Python学习笔记(十一): 时间模块ti...

  • Python爬虫Scrapy(六)_CrawlSpiders

    本篇将学习CrawlSpiders以及日志的使用,更多内容请参考:Python学习指南 CrawlSpiders ...

  • Python学习日志

    写在前面 鉴于笔者本人有一个学得不怎么快但是忘得快的特点,故创建此文章以供忘记东西时查看。或者进行复习之用。以下的...

  • python学习日志

    20210130 搭建环境vmware win10虚拟化环境 1230主机 北风网 下载材料 安装python及i...

网友评论

      本文标题:Python 学习日志第五篇(913)

      本文链接:https://www.haomeiwen.com/subject/zuqhvftx.html