一、基本数据类型
1、字符串 str
字符串方法介绍(二)
a --expandtabs( )

expandtabs( ) 把字符串中的 tab 符号('\t')转为空格
参数默认为8,注意字符串原有的空格也参与计算长度

test = "LinGou\tLinGengxin"
v1 = test.expandtabs( )
#这里是根据字符串的长度计算,expandtabs( )默认为8,执行方式如下
#"LinGou\tLinGengxin"
#LinGou是6个字符,此时遇到\t,expandtabs( )默认为8,要补全2个字符长度,即6+2=8,
#\t之后的字符不用处理
print(v1) v2 = test.expandtabs(6)
#同样的这里也是这样执行,参数为6,
# 字符串从左到右6个字符一组,LinGou是6个字符,忽略不作处理直接输出,此时遇到\t,
# 前面没有字符参与计算长度,此时需要\t直接输出6个空格
#\t之后的字符不用处理
print(v2) v3= test.expandtabs(7)
#参数为7,LinGou是6个字符,此时需要补全1个空格即可
#注意这里的空格是expandtabs()输出的,不是自带的
print(v3) test2 = "LinGou\t wang \twang"
v4 =test2.expandtabs(7)
#字符串原有的空格也参与计算长度
#参数为7,LinGou是6个字符,遇到第一个\t,此时需要补全1个空格即可
#继续计算,第一个\t输出一个空格,之后有一个字符串自带的空格,
#1个自带空格+wang(4个字符)+1个自带空格=6个长度,遇到\t,此时补全1个空格即可
#第二个\t之后的字符不用处理
print(v4) test3 = "123456\t789012345\t67890"
v5 =test3.expandtabs(6)
#参数为6,计算字符长度,123456长度为6,直接输出不做处理,
# 前面没有字符参与计算长度,此时需要\t直接输出6个空格
#继续计算,789012,长度为6,直接输出不做处理,
# 继续计算,345长度为3,遇到\t,此时需要补全3个空格
#第二个\t之后的字符不用处理
print(v5)

  

输出结果

LinGou  LinGengxin
LinGou LinGengxin
LinGou LinGengxin
LinGou wang wang
123456 789012345 67890

  

举个例子

test = "name\temail\tpasswd\nnicholas\t123@qq.com\t123\nPony\t10001@qq.com\t12345\nTony\t10002@qq.com\t12345"
v6 = test.expandtabs(20)
print(v6)

  

输出结果

name                email               passwd
nicholas 123@qq.com 123
Pony 10001@qq.com 12345
Tony 10002@qq.com 12345

  

分析:这里的\n是换行符,这里可以通过\t、\n制作一个类似表格的结果。

b--isalpha()

isalpha( )判断字符串是否只包含字母、汉字,如包含数字、下划线则输出False

test = "nicholas"
v7 = test.isalpha()
print(v7) test2 ="nicholas1"
v8 = test2.isalpha()
print(v8) test3 ="尼古拉斯"
v9 = test3.isalpha()
print(v9) test4 ="nicholas尼古拉斯"
v10 = test4.isalpha()
print(v10)

  

输出结果

True
False
True
True

  

c--isdecimal()、isdigit()、isnumeric

isdecimal( )判断当前输入是否是数字
isdigit()判断当前输入是否是数字

test = "123"
v11 = test.isdecimal()
v12 = test.isdigit()
v13 = test.isnumeric()
print(v11, v12,v13) test1 = "②"
# 对于这种特殊符号的2,有的函数支持,有的不支持,所以出现了两种结果
v14 = test1.isdecimal()
v15 = test1.isdigit()
v16 = test.isnumeric()
print(v14, v15,v16) test2 = "IV" # 罗马数字,输入法特殊符号里输入,不能直接写英文字母I V
v17 = test2.isdecimal()
v18 = test2.isdigit()
v19 = test.isnumeric()
print(v17, v18,v19) test3 = "二" # 汉字
v20 = test2.isdecimal()
v21 = test2.isdigit()
v22 = test.isnumeric()
print(v20, v21,v22)

输出结果

True True True
False True True
False False True
False False True

  

分析:第三种罗马数字"IV",经测试,isdigit()、isdecimal()都输出False,有的博客写错了,写成isdigit()输出True,isdecimal()输出False。
digit:数字, decimal:十进制的,小数
numeric:数字的; 数值的

d--isidentifier()

判断字符串是否是合法的标识符,字符串仅包含中文字符合法,实际上这里类似判断变量名是否合法。
一般的变量命名以字母、数字、下划线,但数字不能开头,以上都会输出True
这里输出True的情况要加上仅包含中文字符,使用python内部函数名、标识符。

test = "123"
test1="_123"
test2="def"
test3="中国"
v23 = test.isidentifier()
v24 = test1.isidentifier()
v25 = test1.isidentifier()
v26 = test1.isidentifier()
print(v23,v24,v25,v26)

  

输出结果

False True True True

  

e--isprintable()

判断是否存在不可显示的字符
\n 换行 \t 制表符等在打印时无法显示出来

test = "123"
test1 = "123\n"
test2 = "123\t"
v27 = test.isprintable()
v28 = test1.isprintable()
v29 = test2.isprintable()
print(v27, v28,v29)

  

输出结果

True False False

  

f--isspace()

判断是否全部是空格,必须全部都是,空字符串也会输出False
下面的test3就是空字符串。

test = "123"
test1 = "12 3"
test2 = " "
test3 =""
v30 = test.isspace()
v31 = test1.isspace()
v32 = test2.isspace()
v33 = test3.isspace()
print(v30, v31,v32,v33)

  

输出

False False True False

  

g--istitle()、title()

istitle()判断是否是标题,即英文语句每个单词的首字母都是大写的
title()将英文语句转换为标题类型,即将每个单词的首字母都转为大写的

test = "Return True if all cased characters in S are uppercase and there is"
v1 = test.istitle()
print(v1)
v2 = test.title()
print(v2)
v3 = v2.istitle()
print(v3)

  

输出结果

False
Return True If All Cased Characters In S Are Uppercase And There Is
True

  

h--join()

将字符串中的每一个元素按照指定分隔符进行拼接

test = "大王叫我来巡山"
t1 = " "
t2 = "*"
v1 = t1.join(test)
v2 = t2.join(test)
print(v1)
print(v2)

  

输出结果

大 王 叫 我 来 巡 山
大*王*叫*我*来*巡*山

  

i--center()、ljust()、rjust()

center( ) 设置宽度,并将字符串内容居中,其他地方根据参数进行填充,默认为空白
ljust()设置宽度,并将字符串内容放在左边,其他地方根据参数进行填充,默认为空白
rjust()设置宽度,并将字符串内容放在右边,其他地方根据参数进行填充,默认为空白

test = "nicholas"
v1 = test.center(20,"*")
v2 = test.ljust(20,"*")
v3 = test.rjust(20,"*")
print(v1)
print(v2)
print(v3)

  

输出结果

******nicholas******
nicholas************
************nicholas

  

j--lower()、islower()、upper()、isupper()

lower()将英文字符转换为小写
islower()判断字符串是不是全部是小写
upper()将英文字符转换为大写
isupper()判断字符串是不是全部是大写

test = "Nicholas"
v1 = test.lower()
v2 = test.islower()
v3 = test.upper()
v4 = test.isupper()
print(v1)
print(v2)
print(v3)
print(v4)

  

输出结果

nicholas
False
NICHOLAS
False

  

k--strip()、lstrip()、rstrip()

strip(),移除指定的字符串,默认可以移除空格、\n 、\t,也可以指定要移除的字符
lstrip()移除原字符串左边的指定的字符串,默认可以移除空格、\n 、\t,也可以指定要移除的字符
rstrip()移除原字符串右边的指定的字符串,默认可以移除空格、\n 、\t,也可以指定要移除的字符

test = " Nicholas "
test2 = " \nNicholas\n"
test3 = "**Nicholas**"
v1 = test.strip()
v2 = test.lstrip()
v3 = test.rstrip()
v4 = test2.strip()
v5 = test2.lstrip()
v6 = test2.rstrip()
v7 = test3.strip("*")
v8 = test3.lstrip('*')
v9 = test3.rstrip('*')
print(v1)
print(v2)
print(v3)
print(v4)
print(v5)
print(v6)
print(v7)
print(v8)
print(v9)

  

输出结果

Nicholas
Nicholas
Nicholas
Nicholas
Nicholas Nicholas
Nicholas
Nicholas**
**Nicholas

  

l--maketrans()、translate()

maketrans(),和translate()一起用
maketrans()做一种对应关系,translate()对其进行转换

str1 = "aeiou"
str2 = "12345"
test = "Nicholas" v1 = str.maketrans("aeiou","12345")
#做一种对应关系
v2 = test.translate(v1)
#进行转换,类似对明文密码进行加密
#根据对应关系,遇到i替换为3,遇到o替换为4,在没有对应关系的字符不变。
print(v2)

  

输出结果

N3ch4l1s

  

m--partition()、rpartition()、split()、rsplit()

partition()用来根据指定的分隔符将字符串进行分割。结果是分割为三部分,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
这个指定的字符是从左向右数的,如之后还有相同的字符也不再进行分割。

rpartition()功能与partition()相同,只是计算指定字符是从右向左数的。同样也是分为三部分,第一个为分隔符右边的子串,第二个为分隔符本身,第三个为分隔符左边边的子串。
同样的,之后还有相同的字符也不再进行分割。

split()指定分隔符对字符串进行切片,如果参数num 有指定值,则分隔 num个子字符串,但是指定的字符串不在出现在输出的结果中,这个是从左到右进行分割的
rsplit()与split()功能相同,只是这个是从右向左分割的。

str1 = "aeiouaeiou"
v1 = str1.partition("i")
v2 = str1.rpartition("i")
v3 = str1.split("i")
v4 = str1.rsplit("i")
print(v1)
print(v2)
print(v3)
print(v4)

  

输出结果

('ae', 'i', 'ouaeiou')
('aeiouae', 'i', 'ou')
['ae', 'ouae', 'ou']
['ae', 'ouae', 'ou']

  

再举个例子

str1 = "aeiouaeiouijk"

v1 = str1.split("i",2)
v2 = str1.rsplit("i",2)
print(v1)
print(v2)

  

输出结果

['ae', 'ouae', 'ouijk']
['aeiouae', 'ou', 'jk']

  

分析:这里加了参数2,进行了2次分割。

n--splitlines()

根据换行符\n进行分隔,如果参数为False,不包含换行符,如果为True,则保留换行符。

str1 = "aeio\nuaeio\nuijk"
v1 = str1.splitlines()
v2 = str1.splitlines(False)
v3 = str1.splitlines(True)
print(v1)
print(v2)
print(v3)

  

输出结果

['aeio', 'uaeio', 'uijk']
['aeio', 'uaeio', 'uijk']
['aeio\n', 'uaeio\n', 'uijk']

  

o--swapcase()

用于对字符串的大小写字母进行转换。
大写字母转为小写,小写字母转为大写字母

str1 = "Nicholas"
str2 = "NicHolAs"
v1 = str1.swapcase()
v2 = str2.swapcase()
print(v1)
print(v2)

  

输出结果

nICHOLAS
nIChOLaS

  

p--replace()

字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

str1 = "NicholasNicholasi"
v1 = str1.replace("i","niubi")
v2 = str1.replace("i","niubi",2)
print(v1)
print(v2)

  

输出结果

NniubicholasNniubicholasniubi
NniubicholasNniubicholasi

  

字符串

count:(python中的count()函数,从字面上可以知道,他具有统计功能)

Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

语法

count()方法语法:

str.count(sub, start= 0,end=len(string))

参数

  • sub -- 搜索的子字符串
  • start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
  • end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

返回值

该方法返回子字符串在字符串中出现的次数。

例子

1 strings="How do you do"
2
3 print(strings.count("o"))

其中7个重要的方法要熟练掌握

join()
split()
find()
strip()
upper()
lower()
replace()

二、字符串的其他知识

1、索引,下标

获取字符串中的某一个字符
字符串的索引,下标,下标是从0开始的
str1 = "nicholas"
n i c h o l a s
0 1 2 3 4 5 6 7

str1 = "Nicholas"
v1 = str1[5]
v2 = str1[0:3]#注意这里是冒号,不是逗号,这里是前闭后开区间,即[0,3)
print(v1)
print(v2)

  

输出结果

l
Nic

  

2、len()

获取字符串长度,获取当前字符串中由几个字符组成

str1 = "Nicholas"
str2 ="尼古拉斯"
v1 = len(str1)
v2 = len(str2)
print(v1)
print(v2)

  

输出结果

8
4

  

3、for循环

for 变量名 in 字符串:
for循环可以遍历任何序列的项目,如一个列表或者一个字符串,简单的说就是for循环会自动对字符串的每个字符进行循环。等同于while循环中加上count = count + 1的效果。

str1 ="尼古拉斯真牛逼!"
i = 0
while i < len(str1):
v = str1[i]
print(v)
i = i + 1
print("!!!!!")

  

输出结果









!!!!!

  

用for循环也可以实现

str1 ="尼古拉斯真牛逼!"
for i in str1 :
#这里的i就会遍历str1中的所有字符,就是把字符串里的字符都跑一遍
#不用指定v=str1[i],可以直接print(i)
print(i)
print("!!!!!")

  

输出结果









!!!!!

  

4、切片
根据下标输出内容

str1 ="尼古拉斯真牛逼!"
v = str1[0:-1]
#这里的-1是指倒数第二个字符
print(v)

 

输出内容

尼古拉斯真牛逼

 

下标负数的数法下标负数的数法,下标可以为空表示取到头或尾

尼     古    拉    斯    真    牛    逼   !

-8    -7    -6     -5     -4   -3      -2    -1   

即从右向左开始,从-1开始数起。

举个例子

name = " Nicholas"

v = name[-2:]

print(v)

 输出结果

 as

  

  

5、字符串

一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串

Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。

6、range()

range()函数可创建一个整数列表,一般用在 for 循环中。
创建连续或不连续的数字。

Python2中range()直接创建内容,python3中只有for循环时,才一个一个创建

i = 0
for i in range(10):
print(i)

  

输出结果

0
1
2
3
4
5
6
7
8
9

  

range()函数语法
range(start, stop[, step])

三个参数是开始,结束,步长,开始结束是前闭后开区间,第三个参数就是步长,默认为1,可以看做是跳过(步长-1)个整数输出一次。如果是负数,则是反向减去。
例子

i = 0
for i in range(1,20,3):
print(i)

  

输出结果

1
4
7
10
13
16
19

  

Python之路(第三篇):Python基本数据类型字符串(二)的更多相关文章

  1. python学习【第三篇】基本数据类型

    Number(数字) int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取 ...

  2. 【Python之路】第九篇--Python基础之线程、进程和协程

    进程与线程之间的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与属于同一进程的其它线程共享进程所拥有的全 ...

  3. 【Python之路】特别篇--Python面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  4. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

  5. Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

    一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...

  6. Python之路(第五篇) Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...

  7. 【Python之路】特别篇--Python切片

    字符串切片操作 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割. 注意: 数是可选的,而冒号是必须的. consequence[start:end:step] 切片操作符中的 ...

  8. 【Python之路】特别篇--Python文件操作

    文件操作 open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: (1)打开文件 (2)操作文件 一.打开文件 文件句柄 = open('文件路径', '模式','编码') 打开文件时, ...

  9. 【Python之路】特别篇--Python面向对象(初级篇)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...

随机推荐

  1. Java基础学习总结 -- 图形用户界面GUI

    虽然目前Java算不上前端开发的主力,但是作为Java入门基础的一部分,学习Java的GUI编程还是有必要的,而且可以做出一些小且有趣的图形程序来提高学习热情.本篇学习总结均为一个Beginner的笔 ...

  2. web编程 java.io.EOFException错误

    java.io.EOFException 严重: IOException while loading persisted sessions: java.io.EOFException 严重: Exce ...

  3. Mysql函数FIND_IN_SET()的使用方法

    有了FIND_IN_SET这个函数.我们可以设计一个如:一只手机即是智能机,又是Andriod系统的. 比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1.智能机,2.Andri ...

  4. C语言之复杂指针详解

    在<C陷阱与缺陷>第二章第一节中有这样一个声明: (*(void(*)())0)(): 看到这样的表达式估计让不少人都“不寒而栗”了吧,其实虽然看起来复杂,但是构造这类表达式其实只有一条简 ...

  5. Mysql的存储过程(以Mysql为例进行讲解)

       我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...

  6. linux 模拟延时和丢包

    这是 RHCA 中的一个 BDP 的测试,这也是公司很常用的一种延时和丢包的模拟,现在分享给大家. 我们做的应用软件,还有测试 TCP/UDP  对比,测试 BDP 对 TCP/IP 的影响时,我们都 ...

  7. 解决cocos2d 热更是连不上https服务器

    最近苹果宣布所有上架应用都要用https,我们后端走的是同一个函数,导致Android也要连接https. 百度了下,网上说客户端不需要做什么特殊处理,因为cocos本身是支持https的.但是服务端 ...

  8. MFC的杂七杂八

    1.判断焦点当前所在控件 2.动态移动控件位置 3.GDI+绘制文字 4.编辑框跳变显示 5.最大化显示 6.Uint uFormat常用值 7.获取菜单个数 8.添加气泡提示 9.编辑框输入时响应函 ...

  9. 通过自定义window来实现提示框效果

    #import <UIKit/UIKit.h>#import <Foundation/Foundation.h> @interface ZMStatuBarHud : NSOb ...

  10. iOS Dev (67) 单例的实现

    iOS Dev (67) 单例的实现 博客:http://blog.csdn.net/prevention 作者:大锐哥 摘自:Learn iPhone and iPad cocos2d Game D ...