Python学习笔记3—字符串
原始字符串
使用\转义或者r,这种方法在网站设置网站目录结构的时候非常管用。
>>> dos="c:\news" >>> print dos c: ews >>> dos="c:\\news" >>> print dos c:\news >>> dos=r"c:\news" #r开头的字符串就是原始字符串 >>> print dos c:\news >>>
索引和切片
第一个字符是排序为0,空格也占用一个位置
>>> lang="study python"
>>> lang[0]
's'
>>> lang[2]
'u'
>>> "hello"[0]
'h'
根据字符查索引
>>> lang.index("py") 6 >>> lang="study python" >>> lang.index("s") 0 >>> lang.index("p") 6 >>>
切片
得到的字符串是前包括后不包括(序号)
>>> lang="study python" >>> lang[0:4] #从0到序号4之前的字符串 'stud'
>>> lang[1:] #从序号1到最末的字符串
'tudy python'
>>> lang[:10]
'study pyth' #得到序号10之前的字符,包括10
>>> lang[:] #得到所有字符
'study python'
还有一种就是从右边开始切,注意[]中左边的数字要小于右边的数字
>>> a="python" >>> a[-1] 'n' >>> a[-3:-1] 'ho'
字符串的连接
>>> str1="hello" >>> str2="world" >>> str1+" "+str2 #字符串的连接 'hello world'
判断一个字符串是否包含另一个字符串
>>> "h" in "hello" True >>> "lll" in "hello" False
求最值
一个字符串中的每个字符在计算机中都对应着一个编码。
>>> max("hello") 'o' >>> min("hello") 'e' >>> max("12","13") '13'
查看一个字符对应的ASCII值
>>> ord("a") 97 >>> ord("b") 98 >>> ord("A") 65
字符串的比较
小于则返回-1,等于返回0,大于返回1,注意字符串之间的比较,先比较第一个字符,如果相等就比第二个字符,如果不相等则返回比较结果。
>>> cmp("a","b") -1 >>> cmp("123","2") -1
>>> cmp("abc","b")
-1
字符串之间的乘法
>>> "-"*10 '----------' >>> "a"*10 'aaaaaaaaaa'
计算一个字符串之间的长度
返回的是int类型
>>> m=len("hello") >>> m 5 >>> type(m) <type 'int'>
字符串格式化输出
>>> "I like %s ,you know." %"Python" %s是个占位符可以被其它字符串代替 'I like Python ,you know.'
>>> "%d years" %15
'15 years'
>>> "My wegiht is %.2f" %70.222
'My wegiht is 70.22'
>>> "My wegiht is %+.2f" %70.222
'My wegiht is +70.22'>>> print "My name is %s,I'm %d years." %("Keven",20) #也可以出现多个替代符 My name is Keven,I'm 20 years.
上面的方法常被认为是太古老的,下面是新的格式方法,即String .format的格式方法,{}作为占位符
>>> print "My name is {},I'm {} years.".format("Keven",20)
My name is Keven,I'm 20 years.
>>> print "My name is {name},I'm {age} years.".format(name="Keven",age=20) #如果觉得还不明确,可以采取这种对应的方法
My name is Keven,I'm 20 years.
常用的字符串方法
>>> dir(str) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
具体的方法可以用help查看
>>> help(str.upper) Help on method_descriptor: upper(...) S.upper() -> string Return a copy of the string S converted to uppercase. (END)
实例:
1.split,分割,string向list转换
>>> "I love Python".split(" ") ['I', 'love', 'Python'] >>> "www.qq.com".split(".") ['www', 'qq', 'com']
>>> line = "Hello.I am keven.Welcome you."
>>> line.split(".",1) #指定分割的范围
['Hello', 'I am keven.Welcome you.']
2.strip,lstrip,rstrip,去空格
>>> " hello ".strip() 'hello' >>> " hello ".lstrip() 'hello ' >>> " hello ".rstrip() ' hello'
3.字符大小写转换
- S.upper() 变大写
- S.lower 变小写
- S.capitalize() 首字母大写
- S.isupper() 是否全是大写
- S.islower 是否全是小写
- S.istitle() 每个单词的第一个字母是否为大写
>>> "hello".upper() 'HELLO' >>> "hello".istitle() False >>> "Hello".istitle() True >>> "Hello World".istitle() True >>> "Hello world".istitle() False
join()连接字符串
>>> b= "www.qq.com".split(".") >>> b ['www', 'qq', 'com'] >>> ".".join(b) 'www.qq.com' >>> "/".join(b) 'www/qq/com'
Python避免中文乱码
1.在开头声明
#coding=utf-8
2.遇到字符(节)串,立刻转化为unicode,不要用str(),直接使用unicode()
>>> a=unicode('中',encoding='utf-8') >>> a u'\u4e2d' >>> print a.encode('utf-8') 中
3.如果对文件操作,打开文件的时候,最好用 codecs.open,替代 open
import codecs codecs.open('filename', encoding='utf8')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了