本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和

请知悉:

计算机中,一切皆为对象
世界万物,皆为对象,一切对象皆可分类

1.什么是字符串?

类似"hello world"就是一个字符串

定义:是一个有序的字符的集合,用于存储和表示基本的文字信息,一对单双或三引号中间包含的内容成为字符串

注意:变量声明中,不加引号的字符串表示变量,name=jack 会出错

2.字符串特点:

有序,不可变
字符串是特殊的元组,可以切片

3.字符串的格式化输出

字符串是 %s,整数 %d,浮点数%f

name = "Jack"
print ("I am %s,how are you?" %name)
--->I am Jack,how are you?

4.字符串的拼接和重复输出:

1) 字符串拼接("万恶的加号 +")

a = 'Helllo '
b = 'world '
print(a + b)
--->'Hello world'

注意:
python中的字符串在C语言中体现为一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空间,一旦需要修改字符串,就需要再次开辟空间,会占用过多内存空间

原理:

使用加号连接2个字符串会调用静态函数string_concat(register PyStringObject *a ,register PyObject * b),在这个函数中会开辟一块大小是a+b的内存的和的存储单元,然后将a,b字符串拷贝进去。如果是n个字符串相连 那么会开辟n-1次内存,是非常耗费资源的。

2) 重复输出字符串(*)

name='jack '
print(name*5)
-->jack jack jack jack jack

注意:“+”和“*”只能在字符串之间进行操作,不能跨数据类型

3)str.join()

连接2个字符串,可指定连接符号,常用

a='hello '
b='####'
print(a.join(b))
--->#hello #hello #hello #

5.字符串常用方法:

1) str.count()  # 字符数统计

字符串统计

s = 'Hello World'
print(s.count('o'))
--->2

2) str.strip()   # 格式化输出

删除字符串两边的指定字符,默认为空格,\t为tab,\n为换行符

s = 'Hello World    '
s.strip()
--->'Hello World'

3) str.lstrip()   # 格式化输出

删除字符串左边的指定字符,默认为空格

s = '    hello    '
s.lstrip()
--->'hello '

4) str.rstrip()  # 格式化输出

删除字符串右边指定字符,默认为空格

s='    hello    '
s.rstrip()
--->' hello'

5) str.index 和str.find    # 查找索引

功能相同,区别在于find()查找失败会返回-1,不会影响程序运行。
一般用find!=-1或者find>-1来作为判断条件。
str.find:检测字符串中是否包含子字符串str,可指定范围

s='hello world'
print(s.find('l')) # 第一个索引为2
--->2
print(s.find('x')) # 找不到返回-1
--->-1

str.index:检测字符串中是否包含子字符串str,可指定范围

s='hello world'
print(s.index('l'))
-->2
print(s.index('x'))
-----返回------
Traceback (most recent call last):
File "D:/PyProjects/1.svndata/test.py", line 32, in <module>
print(s.index('x'))
ValueError: substring not found

6) str.len()   #字符串长度

s = 'hello world'
print(len(s))
--->11

7) "str" in | "str" not in    # 测试是否包含

是否包含指定字符串

s = 'hello world'
print('hello' in s)
--->True
print('' not in s)
--->True

8) 字符串中字母大小写转换

8.1) str.lower()   # 转换为小写

s = 'Hello World'
print(s.lower())
--->hello world

8.2) str.upper()   # 转换为大写

s = 'Hello World'
print(s.upper())
--->HELLO WORLD

8.3) str.swapcase()   # 大小写互换

s = 'Hello World'
print(s.swapcase())
--->hELLO wORLD

9) str.center()   # 将字符串居中

可指定字符串长度以及两边填充的字符

s = 'hello world'
print(s.center(40, '*'))
--->**************hello world***************

10) 字符串的测试、判断函数

这类函数在string模块中没有,且返回的都是布尔值

str.isdigit()                  # 是否全是数字,并至少有一个字符
str.isalpha() # 是否全是字母,并至少有一个字符
str.isspace() # 是否全是空白字符,并至少有一个字符
str.isalnum() # 是否全是字母和数字,并至少有一个字符
str.islower() # Str中的字母是否全是小写
str.isupper() # Str中的字母是否全是大写
str.istitle() # Str是否是首字母大写的
str.startswith("hehe") # 是否以hehe开头
str.endswith("haha")    # 是否以haha结尾

6. 字符串切片

str = ''
print(str[0:3])     # 截取第一位到第三位的字符
print(str[:])   # 截取字符串的全部字符
print(str[6:])     # 截取第七个字符到结尾
print(str[:-3])    # 截取从头开始到倒数第三个字符之前
print(str[2])     # 截取第三个字符
print(str[-1])     # 截取倒数第一个字符
print(str[::-1])    # 创造一个与原字符串顺序相反的字符串
print(str[-3:-1])   # 截取倒数第三位与倒数第一位之前的字符
--->78
print(str[-3:])    # 截取倒数第三位到结尾
print(str[:-5:-3]) # 逆序截取,截取倒数第五位数与倒数第三位数之间
--->96

注意:
1)字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。
2)任何上面的函数改变了字符串后,都会返回一个新的字符串,但是原字串并没有变。
3)字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如字符串[下标])
4)下标(索引值)从左边,从0开始,最大下标值是字符串长度减1,即len(string) - 1

拓展:什么是可变和不可变的数据类型:

1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

---------- 完毕,呵呵呵呵 -----------

Python数据类型-02.字符串的更多相关文章

  1. Python数据类型之字符串

    一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ...

  2. Python数据类型(字符串)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字符串 字符串是 Python 中 ...

  3. python基础【2】——python数据类型之字符串

    python数据类型-字符串 一. 字符串的表示方法(str) 作用: 记录文本信息 表示方法:' ' 单引号 " "双引号 ''' '''三单引号 ""&qu ...

  4. Python数据类型之字符串类型

    字符串的表示 字符串是Python中最常用的数据类型之一,必须使用成对的引号包围来表示字符串,引号可以是单引号 ' .双引号 " .三引号''' """,格式如 ...

  5. Python 数据类型:字符串

    一.字符串介绍 字符串是由单引号/双引号/三引号引起来的,由字母 .数字或符号等构成的一串字符 In [1]: name = "Tom" # 定义字符串 In [2]: type( ...

  6. python数据类型和字符串(三)

    一.变量 变量声明变量 #!/usr/bin/env python age= gender1='male' gender2='female' 变量作用:保存状态(程序的运行本质是一系列状态的变化,变量 ...

  7. Python数据类型-----数字&字符串

    Python数字类型 int类型表示的范围:-2147483648至2147483648之间,超出这个范围的数字即视为long(长整形) 在Python中不需要事先声明数据类型,它是根据具体的赋值来进 ...

  8. Python基础-python数据类型之字符串(四)

    字符串 字符串是python中常用的数据类型,使用('或")来创建. 创建字符串: 下标索引 字符串实际上是字符的数组,所以也支持索引. str1 = 'abcdef' 切片 定义:切片是指 ...

  9. python数据类型(数字\字符串\列表)

    一.基本数据类型——数字 1.布尔型 bool型只有两个值:True和False 之所以将bool值归类为数字,是因为我们也习惯用1表示True,0表示False. (1)布尔值是False的各种情况 ...

随机推荐

  1. SpringMVC—概述

    mvc容器的实例化: http://blog.csdn.net/lin_shi_cheng/article/details/50686876 Spring的启动过程: 1: 对于一个web应用,其部署 ...

  2. F题:等差区间(RMQ||线段树)

    原题大意:原题链接  题解链接 给定一个长为n的数组元素和q次区间[l,r]询问,判断区间[l,r]内元素排序后能否构成等差数列 #include<cmath> #include<c ...

  3. link标签 rel="stylesheet"

    首先,link标签是用于当前文档引用外部文档的,其次,这个标签的rel属性用于设置对象和链接目的间的关系,说白了就是指明你链进来的对象是个什么东西的,具体的值及其所表示的关系如下:Alternate: ...

  4. 【4】Python对象

    本章主题 Python对象 内建类型 标准类型操作符 值的比较 对象身份比较 布尔类型 标准类型内建函数 标准类型总览 各种类型 不支持的类型     Python对象        Python使用 ...

  5. spring AOP的两种代理

    本篇记录下spring AOP的两种代理,为下一篇AOP实现做下铺垫. 1.JDK动态代理  2.cglib代理 1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2.如果目标对象 ...

  6. CSS 分页实例

    CSS 分页实例 一.简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DOCTYPE html> ...

  7. c++生成算式并计算(《构建之法》第一章课后第一题)

    c++实现计算器(自动生成算式并计算) 要满足的需求有以下几个: 自动生成随机的四则运算算式,包含括号和小数. 对生成的算式计算出结果. 算式.结果分别存储到不同的文件. 一 生成算式 由上述需求可知 ...

  8. P4行为模型BMV2安装

    前提:依赖关系请移步上篇博客.P4行为模型BMV2依赖关系安装:thrift nanomsg nnpy安装 以及,要把下面这些东西装好. On Ubuntu 14.04, the following ...

  9. Tinkoff Challenge - Elimination Round B. Igor and his way to work(dfs+优化)

    http://codeforces.com/contest/793/problem/B 题意:一个地图,有起点和终点还有障碍点,求从起点出发到达终点,经过的路径上转弯次数是否能不超过2. 思路: 直接 ...

  10. codevs 2216 行星序列 线段树+延迟标记(BZOJ 1798)

    2216 行星序列  时间限制: 2 s  空间限制: 256000 KB     题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始, ...