zoukankan      html  css  js  c++  java
  • 数据类型--字符串

    字符串的定义

    字符串或串(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())
    字符串练习
  • 相关阅读:
    配置secureCRT
    LINUX的网口绑定(bond)
    背包形动态规划 fjutoj2375 金明的预算方案
    背包形动态规划 fjutoj1380 Piggy-Bank
    背包形动态规划 fjutoj2347 采药
    树形动态规划 fjutoj-2392 聚会的快乐
    树形动态规划 fjutoj-2131 第四集,聚集城市
    andriod开发--使用Http的Get和Post方式与网络交互通信
    线段树复合标记
    图论之拓扑排序 poj 2367 Genealogical tree
  • 原文地址:https://www.cnblogs.com/abobo/p/8032612.html
Copyright © 2011-2022 走看看