day 7 字符串

Posted 不要被骄傲遮蔽了双眼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day 7 字符串相关的知识,希望对你有一定的参考价值。

 

    

6.字符串的常见操作
知道方向,不要去背
  1)find,index                   #查找
 2)count 和replace               #替换
 3)split                         # 分割(数据清洗)
 4)capitalize 和 title           #首字母大写
  5)startswitch endswitch         #开头结尾(上传文件名称盘判断)
  6)lower,upper                  #转换为大小写(用户输入同一格式)
  7)center ,ljust,rjust           # 居中显示(网易云歌词)
 8)strip 去除空格,\\n,\\t            #(数据清洗)
  9) partition,rpartition           #分割 (广播体操带队)
 10)splitlines                    # 按行\\n分割
  11) isdigit isalpha  isalnum     # 注册时,必须是字母和数字的组合
 12)join                          #构建字符串
  13)format:                   #格式化输出
浮点数判断
type(eval("123")) == int
type(eval("123.23")) == float

 

1.num=10 和 num=“10”的区别

  numb=10 内存中占用1个字节

  num=“10“ 内存中占用3个字节 

    

   注意:c语言中  字符串末尾还有\\0结束符

    

 

2.类型转换

In [1]: num = 100

In [2]: num2 = "100"

In [3]: name = alex


######################

In [5]: int(num2)
Out[5]: 100

In [6]: str(num)
Out[6]: \'100\'

######################
In [7]: len(name)
Out[7]: 4               #在内存占用4个字节

        

 

3.字符串拼接的2种方式

In [9]: a = "lao"

In [10]: b = "wang"

In [11]: c = a+b

In [12]: c
Out[12]: \'laowang\'

In [13]: 

########################
In [13]: A = 10

In [14]: B = 2

In [15]: C = A+B

In [16]: C
Out[16]: 12

 

 

完成结果显示
In [18]: "===langwang==="
Out[18]: \'===langwang===\'

#######################             第1种方式 

In [19]: e = "===" + a + b + "==="

In [20]: e
Out[20]: \'===laowang===\'


#######################             第2种方式
In [21]: f = "===%s==="%(a+b)

In [22]: f
Out[22]: \'===laowang===\'

 

4.字符串的下标

In [23]: name = "abcdef"   

In [24]: name[0]           #0 下标
Out[24]: \'a\'         #a  元素

In [25]: name[5]
Out[25]: \'f\'


########################  越界
In [26]: name[6]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-26-b480563304b2> in <module>()
----> 1 name[6]

IndexError: string index out of range



#################   [-3][-2][-1]
In [29]: name[len(name)-1]
Out[29]: \'f\'

In [30]: name[-1]
Out[30]: \'f\'

In [31]: name[-2]
Out[31]: \'e\'

In [32]: name[-3]
Out[32]: \'d\'

    

 

 5.切片

####   正向切片
In [33]: name = "abcdefABCDEF"
                           02345678910

In [35]: name[2:5]         #实质 [2:5)
Out[35]: \'cde\'
 
In [36]: name[2:6]         #实质[2:6)   就是[2:5]
Out[36]: \'cdef\'



######   反向切片
In [33]: name = "abcdefABCDEF"
                                  -5-4-3-2-1
                           012345

In [37]: name[2:-2]          #[2:              cdefgABCDEF
Out[37]: \'cdefABCD\'          #   :-2)        abcdefgABCD 
                              #结果             cdefgABCD
 

In [38]: name[2:-1]
Out[38]: \'cdefABCDE\'


In [39]: name[2:-2]
Out[39]: \'cdefABCD\'


In [40]: name[2:0]
Out[40]: \'\'


In [41]: name[2:]             #注意!正序全部
Out[41]: \'cdefABCDEF\'
                                                                        

 

 

  2)实质:【起始位置:终止位置:步长】

     

In [42]: name[2:-1]
Out[42]: \'cdefABCDE\'

In [43]: name[2:-1:2]
Out[43]: \'ceACE\'


In [44]: name[2:-1:1]
Out[44]: \'cdefABCDE\'


In [45]: name[2:-1]             #默认步长为1
Out[45]: \'cdefABCDE\'

 

 

 

  3)字符串的逆序(倒序)?

In [46]: name
Out[46]: \'abcdefABCDEF\'

#######     正序
In [47]: name[0:]
Out[47]: \'abcdefABCDEF\'

In [48]: name[-1:]
Out[48]: \'F\'

In [49]: name[-1:0]
Out[49]: \'\'

##########  倒序  (面试必考)

In [50]: name[-1:0:-1]
Out[50]: \'FEDCBAfedcb\'

In [51]: name[-1::-1]
Out[51]: \'FEDCBAfedcba\'

In [52]: name[::-1]
Out[52]: \'FEDCBAfedcba\'

 

 

6.字符串的常见操作

    知道方向,不要去背

  

 

In [57]: my_str = "hello world python adn pythonxxxxcpp"

In [59]: my_str.
my_str.capitalize    my_str.isalnum       my_str.join          my_str.rsplit
my_str.casefold      my_str.isalpha       my_str.ljust         my_str.rstrip
my_str.center        my_str.isdecimal     my_str.lower         my_str.split
my_str.count         my_str.isdigit       my_str.lstrip        my_str.splitlines
my_str.encode        my_str.isidentifier  my_str.maketrans     my_str.startswith
my_str.endswith      my_str.islower       my_str.partition     my_str.strip
my_str.expandtabs    my_str.isnumeric     my_str.replace       my_str.swapcase
my_str.find          my_str.isprintable   my_str.rfind         my_str.title
my_str.format        my_str.isspace       my_str.rindex        my_str.translate
my_str.format_map    my_str.istitle       my_str.rjust         my_str.upper
my_str.index         my_str.isupper       my_str.rpartition    my_str.zfill

 

   

  1)find,index查找

##########   find
In [60]: my_str.find("world")
Out[60]: 6                #w的下标


In [63]: my_str.find("python")   #从左边开始find
Out[63]: 12

In [64]: my_str.rfind("python")   #从右边开始find
Out[64]: 23


In [61]: my_str.find("redhat")      #没有find out 返回-1
Out[61]: -1 


############# index
In [67]: my_str.index("python")
Out[67]: 12

In [68]: my_str.rindex("python")
Out[68]: 23


In [66]: my_str.index("redhat")   
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-66-44374e6cd47d> in <module>()
----> 1 my_str.index("redhat")

ValueError: substring not found                #没有找出返回异常

 

 

  2)count 和replace

 my_str = "hello world python adn pythonxxxxcpp"

#########   count
In [69]: my_str.count("python")
Out[69]: 2

In [70]: my_str.count("world")
Out[70]: 1

In [71]: my_str.count("rehdat")
Out[71]: 0


#########    replace

In [72]: my_str.replace("world","WORLD")
Out[72]: \'hello WORLD python adn pythonxxxxcpp\'


In [75]: my_str.replace("python","redhat",1)         #替换第1个
Out[75]: \'hello world redhat adn pythonxxxxcpp\'

In [88]: my_str
Out[88]: \'hello world python adn pythonxxxxcpp\'

     #数字,字符串,元组   不可变类型

 

  3)split 分割(数据清洗)

In [81]: my_str.split(" ")
Out[81]: [\'hello\', \'world\', \'python\', \'adn\', \'pythonxxxxcpp\']  #返回list

  

  4)capitalize 和 title   首字母大写

In [82]: my_str.capitalize()
Out[82]: \'Hello world python adn pythonxxxxcpp\'

In [83]: 

In [83]: my_str.title()
Out[83]: \'Hello World Python Adn Pythonxxxxcpp\'

 

  5)startswitch endswitch  开头结尾(上传文件名称盘判断)

#上传文件名称的判断 

In [93]: file_name
Out[93]: \'redhat.txt\'


In [94]: file_name.endswith(".txt")
Out[94]: True


In [95]: file_name.startswith("redhat")
Out[95]: True

 
#  对文件内容的审查,模块    上传病毒

   

  6)lower,upper 转换为大小写(用户输入同一格式)

In [97]: if choic == "yes":
   ....:     print("exit")

   ....: elif choice == "YES":
   ....:     print("exit")
   ....: elif ..


#######   统一一种格式

In [100]: choice = "Yes"

In [101]: choice.lower()
Out[101]: \'yes\'

In [102]: choice.upper()
Out[102]: \'YES\'

  

  7)center ,ljust,rjust  居中显示(网易云歌词)

      

In [105]: lyric = "想要陪你一起看大海"

In [106]: lyric.center(50)
Out[106]: \'                    想要陪你一起看大海                     \'

In [108]: lyric.ljust(50)
Out[108]: \'想要陪你一起看大海                                         \'

In [107]: lyric.rjust(50)
Out[107]: \'                                         想要陪你一起看大海\'
    

 

   8)strip 去除空格,\\n,\\t(数据清洗)

    

In [110]: lyric
Out[110]: \'                    想要陪你一起看大海                     \'


In [111]: lyric.lstrip()          #去除左\\n,\\t
Out[111]: \'想要陪你一起看大海                     \'

In [112]: lyric.rstrip()            #去除右\\n,\\t
Out[112]: \'                    想要陪你一起看大海\'


In [113]: lyric.strip()
Out[113]: \'想要陪你一起看大海\'

 

  9) partition,rpartition  分割 (广播体操带队)

In [114]: my_str
Out[114]: \'hello world python adn pythonxxxxcpp\'

In [115]: my_str.partition("python")
Out[115]: (\'hello world \', \'python\', \' adn pythonxxxxcpp\')


In [117]: my_str.rpartition("python")
Out[117]: (\'hello world python adn \', \'python\', \'xxxxcpp\')

 

 

  10)splitlines  按行\\n分割

In [118]: my_line = "hello\\nworld\\nxx\\nyy\\nzz"

In [119]: print(my_line)
hello
world
xx
yy
zz


In [120]: my_line.splitlines()
Out[120]: [\'hello\', \'world\', \'xx\', \'yy\', \'zz\']

 

  

  11) isdigit isalpha   isalnum  注册时,必须是字母和数字的组合

s为字符串
s.isalnum() 所有字符都是数字或者字母
s.isalpha() 所有字符都是字母
s.isdigit() 所有字符都是数字
s.islower() 所有字符都是小写
s.isupper() 所有字符都是大写
s.istitle() 所有单词都是首字母大写,像标题
s.isspace() 所有字符都是空白字符、\\t、\\n、\\r

 

###### 数字整数  isdigit
In [12]: num = input("请输入一个选项:")
请输入一个选项:1

In [13]: if num.isdigit():
    int(num)
    print("是数字:",num)
   ....:     
是数字: 1


######   字母 isalpha
In [8]: num = input("请输入一个选项:")
请输入一个选项:q

In [9]: if num.isalpha():
    print("是字母")
    print(num)
   ...:     
是字母
q



##### 注册页面,必须是数字和字母的组合
In [16]: num = "1q"

In [17]: num.isdigit()
Out[17]: False

In [18]: num.isalpha()
Out[18]: False


In [20]: num.isalnum()          #alpha
Out[20]: True                            #number


#######   数字字母组合
In [14]: num = input("请输入一个选项:")
请输入一个选项:1q

In [15]: if num.isalnum():
   ....:     print("是字母和数字",num)
   ....:     
是字母和数字 1q

 

 

  12)join  构建字符串

In [21]: a = ["aa","bb","cc"]
In [22]: a
Out[22]: [\'aa\', \'bb\', \'cc\']



In [23]: b = "="

In [24]: b.join(a)
Out[24]: \'aa=bb=cc\'



In [25]: b = " "

In [26]: b.join(a)
Out[26]: \'aa bb cc\'

 

  13)format:格式化输出

# 格式化输出1
>>> s = \'myname is {0}, i am {1}\'
>>>
>>> s.format(\'alxe\',22)
\'myname is alxe, i am 22\'

# 格式化输出2
>>> s = \'myname is {name}, i am {age}\'

>>> s.format(\'alxe\',22)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: \'name\'
>>>
>>> s.format(name=\'alex\',age=22)
\'myname is alex, i am 22\'

 

  

 

 

7.面试题:给定一个字符串Str,  去除所有的  空格和\'\\t\',返回字符串

  • (面试题)给定一个字符串Str,  去除所有的  空格和\'\\t\',返回字符串

    

 

 

####### 题目
In [27]: test_str = "hello world nihao \\t heihie \\t woshi nide\\tpython \\n ll\\ndu"


######  错误做法
In [30]: test_str.split(" ")
Out[30]: 
[\'hello\',
 \'world\',
 \'nihao\',
 \'\\t\',
 \'heihie\',
 \'\\t\',
 \'woshi\',
 \'nide\\tpython\',
 \'\\n\',
 \'ll\\ndu\']


In [32]: test_str.splitlines()
Out[32]: [\'hello world nihao \\t heihie \\t woshi nide\\tpython \', \' ll\', \'du\']

In [33]: test_str.split("\\t")
Out[33]: [\'hello world nihao \', \' heihie \', \' woshi nide\', \'python \\n ll\\ndu\']


In [34]: test_str.split("\\n")
Out[34]: [\'hello world nihao \\t heihie \\t woshi nide\\tpython \', \' ll\', \'du\']

In [35]: test_str.split("\\t\\n")
Out[35]: [\'hello world nihao \\t heihie \\t woshi nide\\tpython \\n ll\\ndu\']



#####  正确做法
In [36]: test_str.split()
Out[36]: [\'hello\', \'world\', \'nihao\', \'heihie\', \'woshi\', \'nide\', \'python\', \'ll\', \'du\']

 

 

#######  字符串拼接

In [37]: result = test_str.split()

In [39]: " ".join(result)
Out[39]: \'hello world nihao heihie woshi nide python ll du\'

In [38]: "".join(result)
Out[38]: \'helloworldnihaoheihiewoshinidepythonlldu\'

 

以上是关于day 7 字符串的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段7——CSS动画

VSCode自定义代码片段7——CSS动画

csp 7连-day2

Python全栈-day6-day7

day 7 字符串

DAY9-字符串笔记整理2018-1-19