Python—字符串

字符串

在讲字符串之前,先了解两个pycharm常用的快捷键:

  • Ctrl + D :快速复制光标所在行的内容到光标所在行的下一行
  • Ctrl + Y :快速删除光标所在行的内容
  • Ctrl + / :对选中的代码行进行注释,会在所选代码行前快速加#(需要提前选中要注释的代码)

1.字符串的创建和赋值

字符串类型是 Python 里面最常见的类型。 可以简单地通过在引号间(单引号,双引号和三引号)包含字符的方式创建它。

例如:第一种方式:     str1 = 'our company is westos'

第二种方式:     str2 = "our company is westos"

第三种方式:     str3 = """our company is westos"""

在这里尤其要注意这个三引号,三引号在pycharm中有两个作用:

1)定义多行字符串:为避免使用转义换行符 \n,通常会用在定义SQL语句的表达式中没有变量的时候使用。

例如:

2)进行多行注释:Python中单行注释是#,多行注释的时候每行都写一个#,或者采用连续的三个双引号。

例如:

在打印字符串时,可能会碰到不可打印的字符串,这时就需要用到转义符号。

转义符号:一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符。

下面是几个经常会用到的转义字符总结:

例如:

* 删除字符和字符串(了解)

字符串是不可变的,只能通过赋一个空字符串或者使用 del 语句来清空或者删除一个字符串,但是没有必要显式的删除字符串。定义这个字符串的代码结束时会自动释放这些字符串。


2.字符串的基本特性

1)连接符( + ), 重复操作符( * ),计算长度

连接操作符: 从原有字符串获得一个新的字符串,用 ‘+’ 将两个要连接的字符串连接起来。

重复操作符: 创建一个包含了原有字符串的多个拷贝的新串,用 ‘*’ 后加数字表示重复的次数。

计算长度:用len( )函数可以计算字符串的长度。

例如:

 

2)序列操作符(索引与切片)

索引(s[i] ):获取特定偏移的元素。字符串中的每一个字符都对应着一个索引值,直接输入索引值就可以输出对应的字符。索引分为正向索引反向索引两类,正向索引下第一个字符的索引值为0,反向索引下最后一个字符的索引值为-1

                                                     

例如:

# 索引
str = 'abcd hello'
# 正向索引
print(str[0])
print(str[2])
print(str[3])
# 反向索引
print(str[-1])

输出结果为:

切片S[i:j]:提取对应的部分作为一个序列。这个序列以第i个字符开始,到第 j-1 个字符结束。

  •  如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
  • 扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;
  • s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法;
  • s[::-1]是实现字符串反转的一种方法。

例如:

 

3)成员操作符(in ,not in)

成员操作符用于判断一个字符或者一个子串(中的字符)是否出现在另一个字符串中。

出现则返回 True,否则返回 False。

例如:

 

4)string 模块预定义的字符串:

总结一些常用的如下:

① string.ascii_letters     所有的字母(大小写都有)

打印结果:'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

② string.ascii_lowercase     所有的小写字母

打印结果:'abcdefghijklmnopqrstuvwxyz'

③ string.ascii_uppercase     所有的大写字母

打印结果:'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

④ string.digits     所有的数字

打印结果:'0123456789'

⑤ string.whitespace     所有的空白符

打印结果:'\t\n\x0b\x0c\r

⑥ string.punctuation     所有的特殊字符

打印结果:'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'


练习(验证回文串)

下面有一个实际案例来综合应用以上的内容知识

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

参考代码如下:

import string
str  = input("请输入验证的字符串:")
if len(str) == 0:
    print(True)
else:
    # 将字符串转成小写字母, 忽略大小写;
    str = str.lower()

    # 创建一个变量cleanStr, 保存清洗过后的字符串;
    cleanStr = ''
    # 依次遍历所有的字符串元素
    for item in str:
        # 判断是否为字母或者数字, 如果是,加入到cleanStr;
        if item in string.ascii_letters + string.digits:
            cleanStr += item

    print("清洗后的字符串:", cleanStr)
    # 判断是否为回文字符串, 正向和反向读取内容相同,即回文.
    print(cleanStr == cleanStr[::-1])

结果示例1:

结果示例2:


3.字符串内建函数

1)字符串的判断与转换

示例:

>>> s='hello'
>>> s.lower()
'hello'
>>> s.upper()
'HELLO'
>>> s.title()
'Hello'
>>> s = 'Hello WoRld'
>>> s.swapcase()
'hELLO wOrLD'
>>> s.capitalize()
'Hello world'
>>> s.title()
'Hello World'
>>> s
'Hello WoRld'
>>> s.isalnum()
False
>>> s = 'hello'
>>> s.isalnum()
True
>>> s.istitle()
False
>>> s = 'Hello'
>>> s.istitle()
True
>>> s = 'Hello world'
>>> s.istitle()
False
>>> s = ''
>>> s.isspace()
False
>>> s = ' '
>>> s.isspace()
True
>>> s = '\t'
>>> s.isspace()
True

注意:

.title: 标题需要每一个首字母大写,e.g. Hello Python

.space: 这里的空格指的是广义的空格, e.g: \n, \t

 

2)字符串的开头和结尾匹配

示例:

>>> filename = 'hello.py'
>>> filename.endswith('.py')
True
>>> url = 'http://www.westos.org'
>>> url.startswith('http')
True

3)字符串的数据清洗

示例:

>>> username = input('Username:')
Username:root
>>> username == 'root'
False
>>> 'root      '.rstrip()
'root'
>>> username = input('Username:').rstrip()
Username:root
>>> username == 'root'
True
>>> '\n\thello\n\t'.strip()
'hello'
>>> s = 'hello world jdjdfjsf jfjf'
>>> s.replace(' ', '')
'helloworldjdjdfjsfjfjf'
>>> s.replace('he', 'westos')
'westosllo world jdjdfjsf jfjf'

4)字符串的位置调整

示例:

>>> s = "学生管理系统"
>>> s.center(50)
'                      学生管理系统                      '
>>> s.center(50, '*')
'**********************学生管理系统**********************'
>>> s.center(50, '-')
'----------------------学生管理系统----------------------'
>>> s.ljust(50, '-')
'学生管理系统--------------------------------------------'
>>> s.rjust(50, '-')
'--------------------------------------------学生管理系统'

5)字符串的搜索,统计

示例:

>>> s = 'hello python hello java'
>>> s.find('hello')
0
>>> s.find('llo')
2
>>> s.find('llo', 6)
15
>>> s.find('llokk')
-1
>>> s.index('hello')
0
>>> s.count('hello')
2

6)字符串的分离与拼接

# 分割
ip = '172.25.254.250'
# 以.为分隔符进行分割;
print(ip.split('.'))  # 打印结果为['172', '25', '254', '250']
#  以.为分隔符进行分割;最多切割1次;
print(ip.split('.', maxsplit=1))    #打印结果为 ['172', '25.254.250']

filename = 'hello.py'
print(filename.split('.'))

# 按行进行分割
info = """

user1: user1
user2: user2
user3: user3
user4: user4
"""
# 以空格(\t, \n, \ )进行分割
print(info.split())
# 以\n进行分割;
print(info.splitlines())



# 组合
ips = ['172', '25', '254', '250']
# 将ips里面的每个元素拼接在一起, 拼接符为.;
print(".".join(ips))
print("-".join(ips))

结果截图:

7)其他的内置方法

cmp()          根据字符串的 ASCII 码值进行比较(py3取消)

len()        返回字符串的字符数

max() and min()    返回最大或者最小的字符,(按照 ASCII 码值排列)

enumerate()    枚举对象同时列出数据和数据下标

zip()        将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值