三, 字符串

字符串的基本格式

  在python中,被两个 ' , '' , ''' 括起来的数据都是字符串

  python中的字符串默认使用unicode进行储存。所以,在保存大量字符串的时候记得先转换成bytes类型再进行储存。


转义模式:

  如果想在字符串中表示''和""字符,就需要用到转义模式,\表示对后面的命令符进行转义,转义为原本的字符字面意思。

  '你好,\‘探险家\’’,就能表示原始字符串的含义,而不发生报错。

  同时,如果想表达\符号,而不是转义符号,也需要对\进行转义。

  我们可以使用\\表示一个\符号的字面意思。

  避开转义:

    如果在字符串中包含英文的'和"字符,python默认将其翻译成为是字符串的范围标志,两个''""中间的就表达为字符串。

    但是如果想在字符串中包含'"这两个符号,可以交替使用这两个符号,进行精确表达字符串的内容:

    例如:"Hello,I'm Python!"

    注意,如果使用print将他们打印出来的话,那么他们将不再包含两端的""

    但是如果只是将他们赋值再变量中,那么调用该变量将仍然显示""来表示该变量是一个字符串!

  简单转义模式:

    如果在一个字符串中想要表达多组''和""的话,就需要用到\,也就是反斜杠的转义!

    例如:句子"I'm going home!",as he said.这句话,如果要在python中准确地表达的话,可以这样写:

    "\"I'm going home!\", as he said."

    这里请注意,我们将字符串两端的范围标识符设置为",所以句子内所有需要表达为原始含义的"都要在前面加一个\,来

    进行转义,但是并不是所有的字符都需要进行转义,这里的'因为和""不冲突,而无需进行转义!

  \自身转义:
    但是既然\在字符串中用作于对其后的字符进行功能性转义的话,那么如果我们仍然需要在字符串中添加\符号该怎么办?

    可以使用\\来表示原始含义的\

    例如:www.baidu.com\asdasd\asdasd在python字符串中可以表达为:

    'www.baidu.com\\asdasd\\asdasd'

  原始字符串转义:

    字符串除了以上说道的简单字符串功能以 外,还包含一些特殊的字符串模式:

    长字符串:

    以'''"""开头,并以'''"""结尾的字符串,都是长字符串,

    在长字符串中,我们可以使用回车后进行自然换行。

    原始字符串:在字符串开头加上r就可以了。

    原始字符串意在使句子中的\变回原始的字面意思。而不是转义符号!

    需要注意的是,原始字符串仅作用于\

    同时注意,如果字符串,表达式或者语句在句尾加了一个\,就表示不换行,python表达式句末默认天剑\n,也就是换行表达式,

    如果我们使用\但是什么都不加的话,就表示源码换行,但是实际上不需要换行,仅仅是为了更好地编辑源码!

    可以使用函数string()和repr()对普通字符串和原始字符串之间进行转换!

 

 

字符串的运算、索引和切片:

  字符串的运算:

    注意:字符串是一种不可变的数据结构,所以任何的切片赋值都是不合法的。所以不支持赋值运算

    python支持字符串之间的相加!这会将两个字符串拼接在一起!

    print中可以使用,将两个字符串隔开的形式,但是字符串之间会多一个空格进行显示。

    但是直接赋值中如果将两个字符串用逗号隔开,直接赋给一个变量的话,那么他们将以元组的方式进行储存。

    也可以使用+号的形式将两个字符串相加,那么他们将返回一个合并之后的字符串!并且中间不会保留一个空格! 

    索引、切片:同列表切片方法!

 

字符串的操作:

  s1 = s.capitalize()          #首字母大写

  s2 = s.upper()             #全部大写

  s2_1 = s.lower()            #全部小写(注意以上3个都不修改原始字符串格式。必须先将修改的值进行保存的!)

  s3 = s.swapcase()        #大小写翻转

  s4 = s.title()              #每个隔开的字符串首字母大写(用特殊字符和数字隔开的字符串)

  s5 = s.center(宽长度,填充物)    #让该字符串在指定宽度下,用指定填充物进行居中设置!

  s6 = s.expandtabs()        #会在\t处替换为一个table键,意思是可以使用制表符?运行中报错!

  s7 = s.startswith()         #判断是否是以什么开头的

  s8 = s.find('W',3,10)           #找到'W'的索引位置,可以设置切片范围,找到后返回索引数字,找不到得到话返回-1。与方法index功能几乎一样,但是如果找不到的话,就会报错!

  s9 = ['1','2','3']

  '+'.join(s9)            #将某个隔字符号加入到某个列表中,合成一个字符串!

  s10 = '1+2+3+4+5'

  s10.split(要将之分隔的符号)   #join的逆向运算,将某字符串中的某隔字符进行抽取,并将其余部分分解成为一个列表!

  s11 = '$#@你好$#@'

  s11.strip()              #可以将字符串两端的特殊符号进行剥离,在用户登录的时候可以使用这一功能!

  s11.rstrip()            #rstrip只剥离右边的字符,lstrip()只剥离左边的字符。

  s11.replace('你好','呢浩')           #将指定字符串替换为另一个指定的字符串!

  s12 = '你好,肿瘤君'

  table = str.maketrans('你君','拟囧')

  s12.translate(table)       #针对某种转换表,对句子中的单个或多个的字符进行批量替换!在此之前,需要使用str.maketrans。两个同时使用,可以达到高级replace的效果。生成转换表,之后再对转换表调用translate方法!

  s13.count(要计数的字符串)    #可以对指定字符串在整体字符串中出现的次数进行计数!也可以规定计数的切片位置!

  其他:.isalnum\.isalpha\.isdigit    #都返回布尔值

  s14.isspace()          #如果字符串中如果全部是空格,至少包含一个的话,就返回真值。

 

  3,公共方法(可以在字符串、列表、元组和字典中都可以使用的方法)

    s= s.len() #计算长度,返回字符串的长度整数

    .count()         #计数功能

 

字符串格式设置的方法:

  方法1:%

    % 是一个占位符,可以在想要进行替换的地方输入 % 来进行站位,之后可以在 %() 添加需要替换的变量

    例如:'''

    '''name = input('请输入姓名')

    age = input('请输入年龄')

    height = input('请输入身高')

    msg = '我的名字是%s, 今年%s岁了,身高%s'%(name,age,height)

    print(msg)

    %s表示替换的内容是字符串string

    %d表示替换的内容是数据digit'''

    %.3f表示替换的数据为精确到小数点后3位的小树float!

  

  方法2:.format()方法

    同样可以使用花括号和.format进行标记和替换,并且能够进行更加精准的设置!

    {}代表了方法1的占位符,其中,{}中若为空,则严格按照之后的.format()中的参数顺序进行替换!

    若{}中填入数字,则代表.format()括号中索引顺序进行替换!

    若{}中填入名字,则将在括号中指定参数和输入的值进行替换!

    一般情况下,以上三种指定参数的方法虽然可以一起使用,但是最好还是别这做,因为这样会让代码变得不可阅读!

    

    可以在{}中添加!格式转换符号,其后分别添加:s\r\a表示不同的编码模式:

      !s表示字符串版本

      !r表示python的字面意思

      !a表示使用ascii码进行显示:()

      :格式设置符号:(冒号)

      :b表示将整数表示为二进制数(注意:使用二进制表示时,不能使用精度和千分位符号的设置)

      :c表示将整数视为Unicode码点:(传入的是unicode码点数字,显示码点数字代表的字符)

      :d将证书视为十进制证书进行处理,这里是整数的默认使用说明符

      :e使用科学表示法来表示小数,用e来进行表示

      :E使用科学表示发来表示小数,用E来表示

      :f使用小数来表示为定点数

      :F使用小数来进行表示,但是特殊字符nan和inf使用大写来表示

      :g:G自动在定点表示法和科学表示法之间做出选择。这是默认为小数的说明符,但是在默认情况下至少有一位小数

      :n不太明白,书上说要在:g的基础上在插入随即域而异的数字分隔符

      :o将整数表示为8进制数

      :x:X将整数表示为十六进制数,并使用大/小写字母

      :%将数表示为百分比值

  设置宽度、精度和千位分隔符

    {:10s}

    冒号后面直接加一个数字,这个数字就是其宽度,如果宽度超过了字符串的超度的话,那么如果是数字,就默认向右对齐,如果

    是字符串的话,就默认向左对齐!

    注意:如果插入的表达式的宽度要超过设置的宽度的话,那么就会按字符串的长度进行显示,不受设置宽度的限制!

    {:.2f}

    冒号后面加一个.4,就表示该处该是为精确到4位的小数。通常只用于在设置float的时候使用

    {:,}

    表示为数字添加一个千位分隔符

    使用{:填充物+<>^对齐指示符号+宽度.(小数指示符),(千位符表示)(小数位数)(数据类型f,d等等)}.format()

    可以对要表达的字符串和数据进行精确的显示设置

    另外,如果需要在会计上显示+-号,那么就在宽度前面加上一个+号就可以了

    如果在宽度钱加上一个=号,那么正负数的数字和正负号将分别想两端对齐!

    最后,如果要用特殊模式显示二进制数,8进制和16进制数字的话,可以在符号说明符和宽度之间放一个#!

    如果需要设置多个宽度,精度和千分位隔符的话,要按照以下的顺序进行设置:(:'对齐符''长度''千分位符''小数点''精度''数据类型')

    

print('格式表达:{:^20,.2f}'.format(19749318.719238))


思考:

  使用这样的字符串方法可以让我实现一个功能:从Excel中导入和导出数据,这样可以让我的数据变得更加直观化!可以找时间去自己实现一些这个功能!

posted on 2019-01-12 21:45  王汉尧  阅读(198)  评论(0编辑  收藏  举报