String
基础知识
----字符串的形式
- 单行字符串
- 形式: 使用单引号(’ ‘)或者双引号(’’ ‘’)
- 举例:‘abc’ , “123”;
- 注意:在单行字符串中如果要进行换行必须加换行符“\”,比如
str = "abc\
def\
123"
print(str)
- 多行字符串
- 形式:使用三个双引号(""" “”")或者单引号(’’’ ‘’’)
- 举例:’’‘abcdef123’’’
- 注意:多行字符串中换行的话不需要""
str = """abc
def
123"""
print(str)
----原字符与转义符
- 转义字符
- 定义: 一些特定的字符在字符串中需要进行转义才能正常输出例如"\",在字符串中想要输出"\",必须这样写"\\"(此处的\\就是转义字符)
- 其他的一些常见的转义字符
- \’ —>单引号
- \"—>双引号
- \t—>横向制表符
- \n—>换行符
- \r—>回车
- \v—>纵向制表符
- \f—>换页
- 例子
sstr1 = "ab\\c"
sstr2 = "\'abc\'"
sstr3 = "ab\tc"
sstr4 = "ab\t\tc"
sstr5 = "ab\\tc"
sstr6 = "ab\nc"
for _ in range(6):
print(eval("sstr"+str(_+1)))
- 原字符
- 由上面我们知道了一些转义字符,它们会起到相应的特殊功能,比如\n在代码中时可见的,但是在输出结果中是不可见的,而是体现在换行上。那么,如果想不想让字符串中的转义字符起作用,而是想让其在输出结果中可见,可以通过将其转换成原生字符来实现
- 转换方式
str1 = r'ab\tc'
print(str1)
str2 = R'ab\tc'
print(str2)
str3 = 'ab\tc'
print(repr(str3))
- 原字符转换成转义字符
- 使用eval()函数将原字符串转换为转义字符串
- 上面的代码中你会发现一个问题,就是前两种的输出结果没有引号,而使用repr函数的输出结果却有引号,你可能觉得这不是什么大问题,但是bug总会突然来到你面前,然后say surprise!!!
- 下面的代码将会解释这个问题
str1 = "abc\tabc"
str2 = r"abc\tabc"
print(str1)
print(str2)
print(eval(repr(str1)))
print(eval("'"+str2+"'"))
- eval()函数的部分扩展 参考博客 ->link
- eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。
- eval(expression[, globals[, locals]])
- expression : 表达式,要是一个字符串
- globals : 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals : 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
- 命名空间
- python是用命名空间来记录变量的轨迹的,命名空间是一个dictionary,键是变量名,值是变量值。
- 在一个 Python 程序中的任何一个地方,都存在几个可用的名字空间。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变 量。
- 每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间, 任何模块均可访问它,它存放着内置的函数和异常。
- python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。可以用print (locals())来查看该函数体内的所有变量名和变量值。
- 例子
- 1、简单表达式print(eval(‘1+2’))输出结果:3
- 2、字符串转字典print(eval("{‘name’:‘linux’,‘age’:18}")输出结果:{‘name’:‘linux’,‘age’:18}
- 3、传递全局变量print(eval("{‘name’:‘linux’,‘age’:age}",{“age”:1822}))输出结果:{‘name’: ‘linux’, ‘age’: 1822}
- 4、传递本地变量age=18print(eval("{‘name’:‘linux’,‘age’:age}",{“age”:1822},locals()))输出结果:{‘name’: ‘linux’, ‘age’: 18}
- 所以应该就明白前面用到eval函数的地方了吧。
- 需要注意的一点就是eval函数不安全,因为它可以执行字符串的内容,所以你可能一不小心就把某个文件删掉了!
----占位符
- 什么是占位符—占位符就好比提前在一个作为上写上一个类别的名字,标明这个位置可以放上任何一个该类别的具体物品且只能放该类物品。
- 使用占位符的好处时可以提前打好格式,也容易改变具体的值。
- 常用的占位符
- 字符:
- %s—>字符串
- %r---->非转义功能的字符串
- %c—>单个字符
- 数字(整数)
- %d—>十进制(%nd,n表示输出的总的长度)
- %i---->十进制
- %o—>八进制
- %x—>十六进制
- 数字(浮点数)
- %f—>浮点数(%m.nf:m表示总长度,n表示小数点后几位)
- %F—>浮点数
- 数字(指数)
- 数字(指数或者浮点数)
- 举例
print("abc: %s" % "abc")
print("abc: %s%s" % ("abc","abc"))
print("abc: %r" % "abc")
print("abc: %s" % "abc\tabc")
print("abc: %r" % "abc\t" )
print("abc: %c" % 97)
print("abc: %c" % 'a')
print("123: %d" % 11)
print("123: %1d" % 11)
print("123: %2d" % 11)
print("123: %3d" % 11)
print("123: %4d" % 11)
print("123: %o" % 11)
print("123: %x" % 11)
print("1->"+"0.0: %f" % 2.0)
print("2->"+"0.0: %2.1f" % 2.0)
print("3->"+"0.0: %2.1f" % 2)
print("4->"+"0.0: %.4f" % 2)
print("5->"+"0.0: %1.4f" % 2)
print("6->"+"0.0: %4.1f" % 2)
print("e: %e" % 300)
print("e: %E" % 300)
str.format的简单用法
print('{0:a>10d} {1:b<10.3f} {2:c^10}'.format(5, 0.5, "python"))
函数
a = input("请输入: ")
:请输入:52
print(type(a), a)
:<class 'str'> 52
a = " abc abc "
print(a, '\n', a.strip())
: abc abc
:abc abc
a = 'abc abc'
print(len(a))
:7
print(len('\n'))
:1
a = "abc abc"
print('a' in a)
:True
print('ab' in a)
:True
print('a' not in a)
:False
a, b = "abc_abc_abc", "abc def hgk"
print(a.split('_'), '\n', b.split(' '))
:['abc', 'abc', 'abc']
['abc', 'def', 'hgk']
a, b, c = 'ab', 'cd', 'ef'
print(''.join([a,b,c]))
:abcdef
print('_'.join([a,b,c])
:ab_cd_ef
a = 'abc Def 123'
print(a.title())
:Abc Def 123
a = 'abc DEF 123'
print(a.capitalize())
:Abc def 123
a = 'abc deF q12'
print(a.upper())
:ABC DEF Q12
a = 'abc deF q12'
print(a.lower())
:abc def q12
a = 'abcdefajaaca'
print(a.count('a'))
:5
a = 'abcdef'
print(a.find('b'), a.find('g'))
:1, -1
b = 'aaaa'
print(b.find('a'))
:0
a = 'abcdef'
print(a.index('b'))
:1
b = 'aaaa'
print(b.index('a'))
:0
a = 'abc'
print(a.replace('a', 'b'))
:bbc
a = 'abc'
print(a.center(9, '-'))
:---abc---
a = 'abcdef'
print(a.startswith('a'),a.startswith('b'),a.startswith('ab'))
:True False True
a ='abcdef'
print(a.endswith('f'),a.endswith('a'),a.endswith('ef'))
:True False True
a, b, c, d = 'abc', '123', 'abc123', 'ab12--'
print(a.isalnum(), b.isalnum(), c.isalnum(), d.isalnum())
:True True True False
a, b = 'abc', 'abc1'
print(a.isalpha(), b.isalpha())
:True False
a, b = '123', '123a'
print(a.isdigit(), b.isdigit())
:True False
a = 'abc '
print(a.isspace())
:False
a = 'abC'
print(a.islower())
:False
a = 'Abc'
print(a.isupper())
:False
a = 'Abc def'
print(a.istitle())
:False