目录

Python字符串学习笔记(持续更新)

字符串

  • 写法 单引号、双引号均可 “hello world” ‘hello world’

  • 对引号转译 \‘或者\"

  • 拼接字符串

      s1 = "hello"
      s2 = "world"
      s3 = s1+s2
      print(s1+s2)
    
  • 字符串转换 str:值转换为合理形式的字符串,(给人看的) repr:创建一个字符串,以合法的python表达式的形式表示值,显示使用(给python看的)

str()一般是将数值转成字符串。 repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如>list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。

  • 长字符串

  • 1、用三个单引号或者双引号代替,字符串可跨行

      '''
      """
    
  • 2、行后加反斜杠

    \
    
  • 原始字符串

  • 1、原始字符串以r开头,

  • 2、原始字符串不能以\结尾,仍要使用需对反斜杠进行转译\\

  • Unicode字符串

  • 1、字符串以u开头

字符串基本操作

  • 所有的标准序列操作(索引、分片、乘法、判断成员资格、求长度、取最大值、最小值)对字符串都适用。
  • 注意:字符串是不可变的

字符串格式化

  • % 实现格式化,想到了C/C++有没有

      "hello %s ,my name is %s"%("name1","name2")
      hello name1 ,my name is name2
    
  • 保留小数点位数

      v = 3.2321332;
      print("%.3f"%v) f表示浮点数
      23123.232
    
  • Python还提供了模版字符串

      s = Template(' hello $x');
      print(s.substitute(x='boy'))
      hello boy
    
      s = Template(' hello  ${x}s');
      print(s.substitute(x='boy'))
      hello boys
    
      插入美元符号$
    
      s = Template(' hello $$ ${x}s');
      print(s.substitute(x='boy'))
      hello $ boys
    
      使用字典存储匹配的值
    
      s = Template(' hello $ ${x}s');
      d={};
      d['x'] = 'boy';
      d['y'] = 'yy';
      print(s.substitute(d))
      hello $ boys
    

字符串常量

  • string.digits:包含数字0-9的字符串
  • string.ascii_letters:包含所有字符(大写或者小些的字符串)
  • string.ascii_lowercase:包含所有小写字母的字符串
  • string.printable:包含所有可打印字符的字符串
  • string.punctuation:包含所有标点的字符串
  • string.ascii_uppercase:包含所有大写字母的字符串

字符串方法

  • 1、find:在一个较长的字符串中查找子字符串,返回子字符串所在位置最左端索引,未找到返回-1

      str = "hello";
      ix = str.find("el");
      print(ix) : 1
    
  • find提供了可选的起始点和终点参数

      str = "hello hi hi hello"
      ix = str.find('hello',1); 从索引为1开始找
      print(ix) : 12 因为从索引1开始找,第一个不符合,所以找的死最后一个hello
      str = "hello hi hi hello"
      ix = str.find('hello',1,12); 从索引为1开始找
      print(ix) : -1 从1找到12没找到
    
  • 2、join:在队列中添加元素,也就是将指定字符串添加到队列元素之间返回一个新的字符串

      lst = ['1','2','3'];
      str = '+';
      print(str.join(lst))  : 1+2+3
      print(str) :  +
    
  • 3、lower:返回字符串的小写字符

      str1 = "HELLO";
      str2 = str1.lower();
      print(str1) : HELLO
      print(str2) : hello
    
  • 4、replace:返回某字符串所在匹配项被替换之后得到的字符串

      str1 = "hello";
      str2 = str1.replace('ll','xx');
      print(str1) : hello
      print(str2) : hexxo
    
  • 5、split:分割字符串,与join反过来

      str = "1+2+3";
      lst = str.split('+');
      print(lst) : ['1','2','3']
      print(str) : 1+2+3
    
  • 6、strip:返回去除了两侧空格的字符串,内部的不受影响

  • 7、translate:与replace类型,其替换字符串中的单个字符,是同时多个一起替换,一般情况下性能优于replace

  • 使用translate时我们需要先获得一张转换表

  • 静态函数str.maketrans()返回可用于str.translate()方法的转换表。

  • 如果只有一个参数,它必须是dict类型,键key为长度为1的字符(unicode字符码或者字符),值value为任意长度字符串或者None。键key对应的字符将被转换为值value对应的字符(串)。

  • 如果有两个参数,他们长度必须相等,每一个x字符将被转换为对应的y字符。如果有第三个参数,其对应的字符将被转换为None。

      str1 = 'abcxyz123'
      trans = str1.maketrans('abc', 'ABC', '123456')
      str2 = str1.translate(trans)
      print(str2) : ABCxyz