数据类型--字符串

字符串的定义

字符串或串(String)是由数字、字母、下划线组成的一串字符。它是编程语言中表示文本的数据类型。

一、 查看123和'123'的区别:

 1 >>> a=123
 2 
 3 >>> stra="123"
 4  
 5 打印查看:结果显示一样
 6 >>> print a
 7 123
 8 
 9 >>> print stra
10 123
11 
12 
13  
14 交互式查看:区分引号
15 >>> a
16 123
17 
18 >>> stra
19 '123'
20  
21 显示类型查看:一个是数字,一个是字符
22 >>> type(a)
23 <type 'int'>
24 
25 >>> type(stra)
26 <type 'str'>
27 
28 
29 计算2个变量发现:类型不匹配,字符串不能用于运算。 
30 >>> a+stra
31 Traceback (most recent call last):
32   File "<stdin>", line 1, in <module>
33 TypeError: unsupported operand type(s) for +: 'int' and 'str'
二、字符串的取值:
python字符串有2种取值顺序:
    从左到右索引默认0开始的,最大范围是字符串长度少1
    从右到左索引默认-1开始的,最大范围是字符串开头
 
列表中的值得分割,也可以用到变量[头下标:尾下标],又称切片。
它可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始。
下标可以为空表示取到头或尾。
1 #!/usr/bin/python
2 s = 'ilovepython'
3  print(s[1:5])
4 
5 输出结果:
6 love。
 
三、字符串的换行:
注意:这么定义不能真实反映出数据的状态,如果不加 、缩进、空格那将会显得非常乱
1 >>> mail='tom:
 hello
 i am jack'
2  
3 >>> mail
4 'tom:
 hello
 i am jack'
5  
6 >>> print mail
7 tom:
8 hello
9 i am jack
四、定义字符串的方法:
使用三个引号作为字符串格式的定义
 1 >>> mail="""tom:
 2  
 3 ...     i am jack
 4 ...     goodbye
 5 ... """
 6  
 7  
 8 >>> print (mail)
 9 tom:
10     i am jack
11     goodbye
12  查看变量保存的格式:
13  
14 
15 >>> mail
16 'tom:
	i am jack
	goodbye
'

五、三个引号也可以作为注释

 1 #!/usr/bin/python
 2 """input"""
 3 a=int(raw_input("please input num1:"))
 4 b=int(raw_input("please input num2:"))
 5 print(a+b)
 6 print(a-b)
 7 print(a*b)
 8 print(a/b)
 9  
10 显示结果:
11 [root@master1 pydata]# python 2.py
12 please input num1:3
13 please input num2:2
14 5
15 1
16 6
17 1
 
 
六、加号(+)是字符串连接运算符星号(*)是重复操作
1 str = 'Hello World!'
2 
3 print(str) # 输出完整字符串
4 print(str[0]) # 输出字符串中的第一个字符
5 print(str[2:5]) # 输出字符串中第三个至第五个之间的字符串
6 print(str[2:]) # 输出从第三个字符开始的字符串
7 print(str * 2) # 输出字符串两次
8 print(str + "TEST") # 输出连接的字符串
1 Hello World!
2 H
3 llo
4 llo World!
5 Hello World!Hello World!
6 Hello World!TEST

字符串常用功能:

移除空白 :print(str.split(" "))
分割:print(str.strip())
长度: len(str)
索:  详情请看《数据类型--索引和切片》
切片:详情请看《数据类型--索引和切片》 
 
  1 class str(basestring):
  2     """
  3     str(object='') -> string
  4     
  5     Return a nice string representation of the object.
  6     If the argument is a string, the return value is the same object.
  7     """
  8     def capitalize(self):  
  9         """ 首字母变大写 """
 10         """
 11         S.capitalize() -> string
 12         
 13         Return a copy of the string S with only its first character
 14         capitalized.
 15         """
 16         return ""
 17 
 18     def center(self, width, fillchar=None):  
 19         """ 内容居中,width:总长度;fillchar:空白处填充内容,默认无 """
 20         """
 21         S.center(width[, fillchar]) -> string
 22         
 23         Return S centered in a string of length width. Padding is
 24         done using the specified fill character (default is a space)
 25         """
 26         return ""
 27 
 28     def count(self, sub, start=None, end=None):  
 29         """ 子序列个数 """
 30         """
 31         S.count(sub[, start[, end]]) -> int
 32         
 33         Return the number of non-overlapping occurrences of substring sub in
 34         string S[start:end].  Optional arguments start and end are interpreted
 35         as in slice notation.
 36         """
 37         return 0
 38 
 39     def decode(self, encoding=None, errors=None):  
 40         """ 解码 """
 41         """
 42         S.decode([encoding[,errors]]) -> object
 43         
 44         Decodes S using the codec registered for encoding. encoding defaults
 45         to the default encoding. errors may be given to set a different error
 46         handling scheme. Default is 'strict' meaning that encoding errors raise
 47         a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'
 48         as well as any other name registered with codecs.register_error that is
 49         able to handle UnicodeDecodeErrors.
 50         """
 51         return object()
 52 
 53     def encode(self, encoding=None, errors=None):  
 54         """ 编码,针对unicode """
 55         """
 56         S.encode([encoding[,errors]]) -> object
 57         
 58         Encodes S using the codec registered for encoding. encoding defaults
 59         to the default encoding. errors may be given to set a different error
 60         handling scheme. Default is 'strict' meaning that encoding errors raise
 61         a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and
 62         'xmlcharrefreplace' as well as any other name registered with
 63         codecs.register_error that is able to handle UnicodeEncodeErrors.
 64         """
 65         return object()
 66 
 67     def endswith(self, suffix, start=None, end=None):  
 68         """ 是否以 xxx 结束 """
 69         """
 70         S.endswith(suffix[, start[, end]]) -> bool
 71         
 72         Return True if S ends with the specified suffix, False otherwise.
 73         With optional start, test S beginning at that position.
 74         With optional end, stop comparing S at that position.
 75         suffix can also be a tuple of strings to try.
 76         """
 77         return False
 78 
 79     def expandtabs(self, tabsize=None):  
 80         """ 将tab转换成空格,默认一个tab转换成8个空格 """
 81         """
 82         S.expandtabs([tabsize]) -> string
 83         
 84         Return a copy of S where all tab characters are expanded using spaces.
 85         If tabsize is not given, a tab size of 8 characters is assumed.
 86         """
 87         return ""
 88 
 89     def find(self, sub, start=None, end=None):  
 90         """ 寻找子序列位置,如果没找到,返回 -1 """
 91         """
 92         S.find(sub [,start [,end]]) -> int
 93         
 94         Return the lowest index in S where substring sub is found,
 95         such that sub is contained within S[start:end].  Optional
 96         arguments start and end are interpreted as in slice notation.
 97         
 98         Return -1 on failure.
 99         """
100         return 0
101 
102     def format(*args, **kwargs): # known special case of str.format
103         """ 字符串格式化,动态参数,将函数式编程时细说 """
104         """
105         S.format(*args, **kwargs) -> string
106         
107         Return a formatted version of S, using substitutions from args and kwargs.
108         The substitutions are identified by braces ('{' and '}').
109         """
110         pass
111 
112     def index(self, sub, start=None, end=None):  
113         """ 子序列位置,如果没找到,报错 """
114         S.index(sub [,start [,end]]) -> int
115         
116         Like S.find() but raise ValueError when the substring is not found.
117         """
118         return 0
119 
120     def isalnum(self):  
121         """ 是否是字母和数字 """
122         """
123         S.isalnum() -> bool
124         
125         Return True if all characters in S are alphanumeric
126         and there is at least one character in S, False otherwise.
127         """
128         return False
129 
130     def isalpha(self):  
131         """ 是否是字母 """
132         """
133         S.isalpha() -> bool
134         
135         Return True if all characters in S are alphabetic
136         and there is at least one character in S, False otherwise.
137         """
138         return False
139 
140     def isdigit(self):  
141         """ 是否是数字 """
142         """
143         S.isdigit() -> bool
144         
145         Return True if all characters in S are digits
146         and there is at least one character in S, False otherwise.
147         """
148         return False
149 
150     def islower(self):  
151         """ 是否小写 """
152         """
153         S.islower() -> bool
154         
155         Return True if all cased characters in S are lowercase and there is
156         at least one cased character in S, False otherwise.
157         """
158         return False
159 
160     def isspace(self):  
161         """
162         S.isspace() -> bool
163         
164         Return True if all characters in S are whitespace
165         and there is at least one character in S, False otherwise.
166         """
167         return False
168 
169     def istitle(self):  
170         """
171         S.istitle() -> bool
172         
173         Return True if S is a titlecased string and there is at least one
174         character in S, i.e. uppercase characters may only follow uncased
175         characters and lowercase characters only cased ones. Return False
176         otherwise.
177         """
178         return False
179 
180     def isupper(self):  
181         """
182         S.isupper() -> bool
183         
184         Return True if all cased characters in S are uppercase and there is
185         at least one cased character in S, False otherwise.
186         """
187         return False
188 
189     def join(self, iterable):  
190         """ 连接 """
191         """
192         S.join(iterable) -> string
193         
194         Return a string which is the concatenation of the strings in the
195         iterable.  The separator between elements is S.
196         """
197         return ""
198 
199     def ljust(self, width, fillchar=None):  
200         """ 内容左对齐,右侧填充 """
201         """
202         S.ljust(width[, fillchar]) -> string
203         
204         Return S left-justified in a string of length width. Padding is
205         done using the specified fill character (default is a space).
206         """
207         return ""
208 
209     def lower(self):  
210         """ 变小写 """
211         """
212         S.lower() -> string
213         
214         Return a copy of the string S converted to lowercase.
215         """
216         return ""
217 
218     def lstrip(self, chars=None):  
219         """ 移除左侧空白 """
220         """
221         S.lstrip([chars]) -> string or unicode
222         
223         Return a copy of the string S with leading whitespace removed.
224         If chars is given and not None, remove characters in chars instead.
225         If chars is unicode, S will be converted to unicode before stripping
226         """
227         return ""
228 
229     def partition(self, sep):  
230         """ 分割,前,中,后三部分 """
231         """
232         S.partition(sep) -> (head, sep, tail)
233         
234         Search for the separator sep in S, and return the part before it,
235         the separator itself, and the part after it.  If the separator is not
236         found, return S and two empty strings.
237         """
238         pass
239 
240     def replace(self, old, new, count=None):  
241         """ 替换 """
242         """
243         S.replace(old, new[, count]) -> string
244         
245         Return a copy of string S with all occurrences of substring
246         old replaced by new.  If the optional argument count is
247         given, only the first count occurrences are replaced.
248         """
249         return ""
250 
251     def rfind(self, sub, start=None, end=None):  
252         """
253         S.rfind(sub [,start [,end]]) -> int
254         
255         Return the highest index in S where substring sub is found,
256         such that sub is contained within S[start:end].  Optional
257         arguments start and end are interpreted as in slice notation.
258         
259         Return -1 on failure.
260         """
261         return 0
262 
263     def rindex(self, sub, start=None, end=None):  
264         """
265         S.rindex(sub [,start [,end]]) -> int
266         
267         Like S.rfind() but raise ValueError when the substring is not found.
268         """
269         return 0
270 
271     def rjust(self, width, fillchar=None):  
272         """
273         S.rjust(width[, fillchar]) -> string
274         
275         Return S right-justified in a string of length width. Padding is
276         done using the specified fill character (default is a space)
277         """
278         return ""
279 
280     def rpartition(self, sep):  
281         """
282         S.rpartition(sep) -> (head, sep, tail)
283         
284         Search for the separator sep in S, starting at the end of S, and return
285         the part before it, the separator itself, and the part after it.  If the
286         separator is not found, return two empty strings and S.
287         """
288         pass
289 
290     def rsplit(self, sep=None, maxsplit=None):  
291         """
292         S.rsplit([sep [,maxsplit]]) -> list of strings
293         
294         Return a list of the words in the string S, using sep as the
295         delimiter string, starting at the end of the string and working
296         to the front.  If maxsplit is given, at most maxsplit splits are
297         done. If sep is not specified or is None, any whitespace string
298         is a separator.
299         """
300         return []
301 
302     def rstrip(self, chars=None):  
303         """
304         S.rstrip([chars]) -> string or unicode
305         
306         Return a copy of the string S with trailing whitespace removed.
307         If chars is given and not None, remove characters in chars instead.
308         If chars is unicode, S will be converted to unicode before stripping
309         """
310         return ""
311 
312     def split(self, sep=None, maxsplit=None):  
313         """ 分割, maxsplit最多分割几次 """
314         """
315         S.split([sep [,maxsplit]]) -> list of strings
316         
317         Return a list of the words in the string S, using sep as the
318         delimiter string.  If maxsplit is given, at most maxsplit
319         splits are done. If sep is not specified or is None, any
320         whitespace string is a separator and empty strings are removed
321         from the result.
322         """
323         return []
324 
325     def splitlines(self, keepends=False):  
326         """ 根据换行分割 """
327         """
328         S.splitlines(keepends=False) -> list of strings
329         
330         Return a list of the lines in S, breaking at line boundaries.
331         Line breaks are not included in the resulting list unless keepends
332         is given and true.
333         """
334         return []
335 
336     def startswith(self, prefix, start=None, end=None):  
337         """ 是否起始 """
338         """
339         S.startswith(prefix[, start[, end]]) -> bool
340         
341         Return True if S starts with the specified prefix, False otherwise.
342         With optional start, test S beginning at that position.
343         With optional end, stop comparing S at that position.
344         prefix can also be a tuple of strings to try.
345         """
346         return False
347 
348     def strip(self, chars=None):  
349         """ 移除两段空白 """
350         """
351         S.strip([chars]) -> string or unicode
352         
353         Return a copy of the string S with leading and trailing
354         whitespace removed.
355         If chars is given and not None, remove characters in chars instead.
356         If chars is unicode, S will be converted to unicode before stripping
357         """
358         return ""
359 
360     def swapcase(self):  
361         """ 大写变小写,小写变大写 """
362         """
363         S.swapcase() -> string
364         
365         Return a copy of the string S with uppercase characters
366         converted to lowercase and vice versa.
367         """
368         return ""
369 
370     def title(self):  
371         """
372         S.title() -> string
373         
374         Return a titlecased version of S, i.e. words start with uppercase
375         characters, all remaining cased characters have lowercase.
376         """
377         return ""
378 
379     def translate(self, table, deletechars=None):  
380         """
381         转换,需要先做一个对应表,最后一个表示删除字符集合
382         intab = "aeiou"
383         outtab = "12345"
384         trantab = maketrans(intab, outtab)
385         str = "this is string example....wow!!!"
386         print str.translate(trantab, 'xm')
387         """
388 
389         """
390         S.translate(table [,deletechars]) -> string
391         
392         Return a copy of the string S, where all characters occurring
393         in the optional argument deletechars are removed, and the
394         remaining characters have been mapped through the given
395         translation table, which must be a string of length 256 or None.
396         If the table argument is None, no translation is applied and
397         the operation simply removes the characters in deletechars.
398         """
399         return ""
400 
401     def upper(self):  
402         """
403         S.upper() -> string
404         
405         Return a copy of the string S converted to uppercase.
406         """
407         return ""
408 
409     def zfill(self, width):  
410         """方法返回指定长度的字符串,原字符串右对齐,前面填充0。"""
411         """
412         S.zfill(width) -> string
413         
414         Pad a numeric string S with zeros on the left, to fill a field
415         of the specified width.  The string S is never truncated.
416         """
417         return ""
418 
419     def _formatter_field_name_split(self, *args, **kwargs): # real signature unknown
420         pass
421 
422     def _formatter_parser(self, *args, **kwargs): # real signature unknown
423         pass
424 
425     def __add__(self, y):  
426         """ x.__add__(y) <==> x+y """
427         pass
428 
429     def __contains__(self, y):  
430         """ x.__contains__(y) <==> y in x """
431         pass
432 
433     def __eq__(self, y):  
434         """ x.__eq__(y) <==> x==y """
435         pass
436 
437     def __format__(self, format_spec):  
438         """
439         S.__format__(format_spec) -> string
440         
441         Return a formatted version of S as described by format_spec.
442         """
443         return ""
444 
445     def __getattribute__(self, name):  
446         """ x.__getattribute__('name') <==> x.name """
447         pass
448 
449     def __getitem__(self, y):  
450         """ x.__getitem__(y) <==> x[y] """
451         pass
452 
453     def __getnewargs__(self, *args, **kwargs): # real signature unknown
454         pass
455 
456     def __getslice__(self, i, j):  
457         """
458         x.__getslice__(i, j) <==> x[i:j]
459                    
460                    Use of negative indices is not supported.
461         """
462         pass
463 
464     def __ge__(self, y):  
465         """ x.__ge__(y) <==> x>=y """
466         pass
467 
468     def __gt__(self, y):  
469         """ x.__gt__(y) <==> x>y """
470         pass
471 
472     def __hash__(self):  
473         """ x.__hash__() <==> hash(x) """
474         pass
475 
476     def __init__(self, string=''): # known special case of str.__init__
477         """
478         str(object='') -> string
479         
480         Return a nice string representation of the object.
481         If the argument is a string, the return value is the same object.
482         # (copied from class doc)
483         """
484         pass
485 
486     def __len__(self):  
487         """ x.__len__() <==> len(x) """
488         pass
489 
490     def __le__(self, y):  
491         """ x.__le__(y) <==> x<=y """
492         pass
493 
494     def __lt__(self, y):  
495         """ x.__lt__(y) <==> x<y """
496         pass
497 
498     def __mod__(self, y):  
499         """ x.__mod__(y) <==> x%y """
500         pass
501 
502     def __mul__(self, n):  
503         """ x.__mul__(n) <==> x*n """
504         pass
505 
506     @staticmethod # known case of __new__
507     def __new__(S, *more):  
508         """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
509         pass
510 
511     def __ne__(self, y):  
512         """ x.__ne__(y) <==> x!=y """
513         pass
514 
515     def __repr__(self):  
516         """ x.__repr__() <==> repr(x) """
517         pass
518 
519     def __rmod__(self, y):  
520         """ x.__rmod__(y) <==> y%x """
521         pass
522 
523     def __rmul__(self, n):  
524         """ x.__rmul__(n) <==> n*x """
525         pass
526 
527     def __sizeof__(self):  
528         """ S.__sizeof__() -> size of S in memory, in bytes """
529         pass
530 
531     def __str__(self):  
532         """ x.__str__() <==> str(x) """
533         pass
字符串源代码

字符串的练习

  1 name = "my name is alex"
  2 
  3 #首字母大写:
  4 print(name.capitalize())
  5 
  6 #判断变量是包含几个a
  7 print(name.count("a"))
  8 
  9 #左右填充,用“-”号代替
 10 print(name.center(50,"-"))
 11 
 12 #右填充,用“-”号代替
 13 print("右填充",name.ljust(50,'-'))
 14 
 15 #左填充,用“-”号代替
 16 print("左填充",name.rjust(50,'-'))
 17 
 18 
 19 #把字符串转成二进制:
 20 a = name.encode()
 21 print(a,type(a))
 22 
 23 #判断一个字符串以什么为结尾
 24 print(name.endswith("ex"))
 25 
 26 
 27 #在	的位置打印多少个空格
 28 text1 = "my name 	 is dongye"
 29 print(text1.expandtabs())
 30 
 31 #找到并取出字符的索引
 32 print(name.find("e"))
 33 print(name[name.find("name"):])    #可以用作切片
 34 
 35 #格式化变量里面的字符串:
 36 text2 = "my name  is {name} and i am {year} old"
 37 print(text2.format(name='alix',year=23))
 38 
 39 
 40 #同format用法一样:
 41 text3 = "my name is {name} and i am {year} old"
 42 print(text3.format_map({'name':'alex','year':12}))
 43 
 44 
 45 #是否包含阿拉伯数字:
 46 print(name.isalnum())
 47 print('a1232'.isalnum())
 48 
 49 #判断是否为整数
 50 print(name.isdigit())
 51 print("A1是否为整形:",'A1'.isdigit())
 52 print("22是否为整形:",'22'.isdigit())
 53 
 54 
 55 #判断是不是一个合法的标识符
 56 print('a A1'.isidentifier())
 57 
 58 #判断是否为
 59 print("判断a是否为小写:",'a'.islower())
 60 
 61 
 62 #判断是否为大写:
 63 print("判断是否为大写:",'DONGYE'.isupper())
 64 
 65 
 66 #把大写转为小写:
 67 print("大写转小写:"'Alex'.lower())
 68 
 69 #把小写转为大写:
 70 print("小写转大写:"'Alex'.upper())
 71 
 72 
 73 #判断是否为空格:
 74 print("判读是否为空格",' '.isnumeric())
 75 
 76 
 77 #判断每个字符首字母是否为大写:
 78 print("每个字符串首字母是否为大写:",'My Name Is '.istitle())
 79 
 80 
 81 #字符串间加特殊符号、字符、表达式
 82 print('+'.join(['a','b','c','d']))
 83 
 84 
 85 #去掉左面的回车和空格
 86 print("去掉左面的回车和空格:",'
Alex'.lstrip())
 87 
 88 #去掉右面面的回车和空格
 89 print("去掉右面的回车和空格:",'Alex
'.rstrip())
 90 print("---")
 91 
 92 
 93 #去掉左右两边的回车和空格:
 94 print("去掉右面的回车和空格:",'
Alex
'.strip())
 95 
 96 
 97 #可以当做随机密码:
 98 p = str.maketrans("abcdef",'123456')
 99 print("alexli".translate(p))
100 
101 
102 #替换所有和单个字符:
103 #replace('源字符','替换字符',第几个)
104 print("所有小写l替换成大写L:",'alex li'.replace('l','L'))
105 print("所有小写l替换成大写L:",'aieix li ding lei'.replace('i','L',3))
106 
107 #查找最后一个指定值的下标:
108 print("从左往右数找到最后一个'l'下标",'alex lil'.rfind('l'))
109 
110 
111 #去掉or按照指定字符分割成列表:
112 print("字符串按照指定字符分割成列表:",'alex li'.split( ))
113 print("字符串按照指定字符分割成列表:",'a+2+3+4'.split('+'))  #常用
114 print("字符串按照指定字符分割成列表:",'a+2+3+4'.split('
'))
115 print("字符串按照指定字符分割成列表:",'a+2
+3+4'.splitlines()) #识别不同系统的换行。
116 
117 #判断以什么为开头:
118 print('AlexLi'.startswith('A'))
119 
120 #大写变小写,小写变大写:
121 print('AlexLi'.swapcase())
122 
123 
124 #每个字符首字母改成大写:
125 print('al ex li'.title())
字符串练习
原文地址:https://www.cnblogs.com/abobo/p/8032612.html