Python3 编程之字符串处理

在编程中最常见的任务就是字符串的处理,So,学好字符串的使用非常重要

一、变量的定义规范

Python中声明变量时,要符合以下规则为准:

  1. 只能使用数字、字母、下划线组成
  2. 变量名开头不能是数字
  3. 不能使用系统保留字使用help('keywords')查看
  4. (建议)使用这种方式进行变量名定义age_old_alex
  5. 程序员的约定:所有字母大写表示为常量
二、字符串操作演示
# -*- coding:utf-8 -*-
'''
在代码首行进行字符编码的声明,Python3 中 默认字符编码为uft-8
'''
str = 'abcdededededefg' # 变量赋值 #根据索引获取数据,0查看第一个字符,-1 查看从右开始的第一个字符
print(str[0])
print(str[-1]) #字符串截取/切片
print(str[2:]) # cdededededefg ,从索引为2的字符开始截取一直到最后
print(str[1:3]) # bc ,从索引为1的字符开始截取到3-1位置,不包含3所在位置字符
print(str[:3]) # abc ,从头开始截取到3-1位置,不包含3所在位置字符
print(str[0:6:2]) # ace ,从索引为0的字符开始截取到6-1位置,不包含6所在位置字符,切片步长为2,每两个字符截取一个
print(str[::-1]) # gfedededededcba,字符串倒叙输出 #S.capitalize()- > str 返回一个第一个字符大写的字符串
print(str.capitalize()) #返回:Abcdededededefg # S.center(width[, fillchar]) 以字符串为中心,左右补充字符 ,width = 设置的宽度,fillchar=补位字符
print(str.center(20,'-')) #返回:"--abcdededededefg---" #count S.count(sub[, start[, end]]) -> int 统计字符串S中的某字符或字符串出现的次数,可进行切片查询
print('count',str.count('de'))
print('count',str.count('de',3,6)) # encode S.encode(encoding='utf-8', errors='strict') -> bytes 使用encoding后定义编码对字符串进行转码
print(str.encode('GBK')) # endswith S.endswith(suffix[, start[, end]]) -> bool 判断后缀是否为指定的字符串,如果是返回True,否则返回Flase ,可进行截位查询
print('endswith->',str.endswith('g')) # expandtabs S.expandtabs(tabsize=8) -> str 将字符串中的制表符改为空格,tabsize进行设置替换的空格数量,默认为8
print('expandtabs','ab\ta'.expandtabs(10)) # find/rfind查找S.find(sub[, start[, end]]) -> int 可以搜索字符串,根据start ----end 切片范围内搜索
print(str.find('f'))
print(str.find('de', 6, 9))
print(str.rfind('de')) #从右开始进行查找 # format 对字符串进行格式化
print('My name is {name},age is {age}'.format(name='wyd',age=18)) # format_map
dict = {'Foo': 54.23345}
fmt = "Foo = {Foo:.3f}"
result = fmt.format_map(dict)
print(result) # index rindex S.index(sub[, start[, end]]) -> int 使用index获取字符所在索引
print(str.index('c'))
print(str.rindex('c')) # isalnum S.isalnum() -> bool 判断字符串中是否全为字母和数字,是则返回True
print(str.isalnum()) # isalpha S.isalpha() -> bool 判断字符串中是否全为字母,是则返回True
print(str.isalpha()) # isdecimal S.isdecimal() -> bool 判断字符串中是否全为数字,是则返回True
print('isdecimal ->','1234'.isdecimal()) # isdigit S.isdigit() -> bool 判断字符串中是否全为数字,是则返回True
print('isdigit ->','4445a'.isdigit())
# isidentifier S.isidentifier() -> bool 判断是否为有效的变量名
print('isidentifier','_def'.isidentifier()) # islower 判断字符串是否全部为小写,是则返回True
print(str.islower())
# isupper 判断字符串是否全部为大写,是则返回True
print(str.isupper())
# isnumeric 字符串中如果为纯数字 返回True
s = '123'
print(s.isnumeric()) #true
print(str.isnumeric()) #Flase # isprintable 判断字符串的字符是否可全部打印,是则返回True
print('isprintable',str.isprintable())
# isspace 判断字符串是否全为空格,如果是怎返回True
print('isspace',' '.isspace())
# istitle 判断字符串中所有的单词拼写首字母是否为大写,且其他字母为小写,如果是怎返回True
print('Abcd'.istitle()) #S.join(iterable)- > str 将序列中的元素以指定的字符连接生成一个新的字符串
print('#'.join(['a','z'])) #返回一个字符串 a#z # ljust/rjust 返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
print('ljust',str.ljust(50)) #右补空格
print('rjust',str.rjust(50)) #左补空格 #lower 返回一个字母全部小写的字符串
print('lower','A1AAAA'.lower()) # strip 、lstrip、rstrip 可删除字符串开头和结尾的空格,中间内容不会删除,
f = ' jj ll '
print(f.strip())
print(f.rstrip())
print(f.lstrip()) # maketrans str.maketrans(x[, y[, z]]) -> dict 两组长度相同的字符串生成字典对应关系,
f = str.maketrans('abcdef','123456') # 生成字典形式的对应关系,且全部以数字展示
print(str.maketrans('abcdef','123456')) #translate 返回字符串,根据参数,将字符串进行转换
print(str.translate(f)) # 根据上步生成的关系将str进行转化,可实现简单加密 #partition 、rpartition 将字符串进行分组,按参数字符进行,分成三部分
print(str.partition('de')) #('abc', 'de', 'dedededefg')
print(str.rpartition('de')) #('abcdededede', 'de', 'fg') #替换S.replace(old, new[, count]) -> str old=被修改的字符、字符串 new=修改的字符、字符串, count=被替换的次数
print(str.replace('d','D')) #返回:'abcDeDeDeDeDefg'
print(str.replace('d','D',2)) #返回: 'abcDeDedededefg' 设置了count参数 只修改了两个 #获取字符串的长度
print(len(str)) # rsplit / split S.split(sep=None, maxsplit=-1) -> list of strings 以字符‘b’为分割符号,生成列表
a = 'abcebcegbs'
b = a.split('b')
print(b) # 返回列表:['a', 'ce', 'ceg', 's'] ,以字符‘b’为分割符号,生成列表
print('rsplit',str.rsplit('de')) # splitlines 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,
# 如果为 True,则保留换行符。
f1 = 'ab \n\c abcd\t\c'
print(f1.splitlines()) # ['ab ', '\\c abcd\t\\c']
print(f1.splitlines(True)) #['ab \n', '\\c abcd\t\\c'] #startswith 用于检查字符串是否是以指定子字符串开头,如果是则返回 True
print(str.startswith('abc')) #True # swapcase 对字符串中的字母进行大小写转换
print('aBcdE'.swapcase()) #AbCDe # title 将字符串中的首字母改为大写,其他字母小写
print('bvcdE'.title()) # upper 将字符串中的字母全部转换为大写
print(str.upper()) #ABCDEDEDEDEDEFG #zfill 返回指定长度的字符串,原字符串右对齐,前面填充0。
print(str.zfill(20))
三、 isdigit、isdecimal、isnumeric的区别

为什么会有这么多判断是否为数字的方法呢,有一个不就行了吗,弄这么多不是多此一举吗?Why?

别着急,其实人家也是有区别的

  1. isdigit()

    • 返回True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
    • 返回False: 汉字数字
    • 报错: 无
  2. isdecimal()

    • 返回True: Unicode数字,,全角数字(双字节)
    • 返回False: 罗马数字,汉字数字
    • 报错: byte数字(单字节)
  3. isnumeric()

    • 返回True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
    • 返回False: 无
    • 报错: byte数字(单字节)

Python3 编程之字符串处理的更多相关文章

  1. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  2. Python2和Python3中的字符串编码问题解决

    Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...

  3. python3入门之字符串

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 经过前面的介绍相信大家也对python有了一个初步的了解:本节主要介绍字符串,不管学习什么编语言字符串一定在其中扮演着重要的地位.本节主要讲解,字 ...

  4. 编程提取字符串"Java is a programming language"中的各个单词,并打印输出。

    import java.lang.String; import java.util.StringTokenizer; public class StringGetWord{ /* 编程提取字符串&qu ...

  5. Java String Integer转换 练习:编程求字符串“100”和“150”按十进制数值做差后的结果以字符串形式输出。

    package com.swift; public class String_To_Integer_Test { public static void main(String[] args) { /* ...

  6. python012 Python3 编程第一步

    Python3 编程第一步在前面的教程中我们已经学习了一些 Python3 的基本语法知识,下面我们尝试来写一个斐波纳契数列.实例如下: #!/usr/bin/python3 # Fibonacci ...

  7. Bash脚本编程之字符串处理

    简介 其实这里说得字符串处理,对应的是bash官网中的[Shell Parameter Expansion],不过直接去看这部分内容实在是太难以理解了.就按照马哥所说的字符串处理会比较好理解,平常使用 ...

  8. [转]C#网络编程(异步传输字符串) - Part.3

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part3.aspx 这篇文章我们将前进一大步,使用异步的方式 ...

  9. [转]C#网络编程(同步传输字符串) - Part.2

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part2.aspx 服务端客户端通信 在与服务端的连接建立以 ...

随机推荐

  1. vue组件间的传值方式及方法调用汇总

    1.传值 a.父组件传子组件 方法一: 父页面: <myReportContent v-if="contentState==1" :paramsProps='paramsPr ...

  2. win server服务器 关闭危险端口 135,137,138,139,445的方法

    Windows默认开放135.137.138.139和445五个端口,都与文件共享和打印机共享有关的,若机器连接网络后会在用户不知道的情况下泄露本机部分信息,这样会给用户带来一部分危险,所以我们在工作 ...

  3. 【Distributed】分布式锁

    一.概述 1.1 分布式解决的核心思路 1.2 分布式锁一般有三种实现方式 二.基于Redis的分布式锁 2.1 使用常用命令 2.2 实现思路 2.3 核心代码 Maven依赖信息 LockRedi ...

  4. 用js刷剑指offer(变态跳台阶)

    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 牛客网链接 思路 假设青蛙跳上一个n级的台阶总共有f(n)种跳法. 现在青蛙从第n个台阶 ...

  5. webpack中配置eslint

    首先安装eslint npm install eslint --save-dev 安装好这个工具后,初始化eslint npx eslint --init 这个时候会自动生成.eslintrc.js ...

  6. java之jvm

    1.JVM内存模型 线程独占:栈,本地方法栈,程序计数器线程共享:堆,方法区 回答以上问题是需回答两个要点:1. 各部分功能2. 是否是线程共享 2.JMM与内存可见性JMM是定义程序中变量的访问规则 ...

  7. windows下对socket的send和recv的超时设置,并附一个简洁明了的socket简单demo

    设置方法 int nNetTimeout=10000;//10秒,    //设置发送超时    setsockopt(m_socket,SOL_SOCKET,SO_SNDTIMEO,(char *) ...

  8. vue 项目中使用postMessage问题总结

    问题描述: 由于目前做的项目分成两个项目,通过iframe嵌套,所以用到了 postMessage 当监听传过来的值的时候  出现了接受多次的问题 产生原因: 我的监听事件是放在home页 mount ...

  9. "Class does not support Automation or does not support expected interface"数据库连接错误问题分析与解决

    1,故障现象 本人编译的英文版程序在本机上运行OK,换台电脑运行,发现启动时连接数据库出错. 错误信息如下: --------------------------- Error start datab ...

  10. Java集合--TreeMap

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3310928 第1部分 TreeMap介绍 TreeM ...