手记

Python(四)字符串

字符串的定义

•第一种方式:
str1 = 'redhat'
•第二种方式:
str2 = "redhat"
•第三种方式:
str3 = """redhat"""

转义符号

\n   代表换行符

\t    代表tab符

\"    代表双引号本身

\'     代表单引号本身

>>> print "sunny,"ok""
  File "<stdin>", line 1
    print "sunny,"ok""
                   ^
SyntaxError: invalid syntax
>>> print "sunny,\"ok\""
sunny,"ok"

字符串类型转换

str(obj) 将其他类型内容转换为字符串
int(obj) 将字符串转换为为整数
float(obj) 将字符串转换为浮点型
long(obj) 将字符串转换为长整型

字符串操作

字符串属于序列,序列支持的操作如下:

一、索引

• 索引(s[i] ):获取特定偏移的元素
• 给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。

>>> s='hello'
>>> s[0]
'h'

>>> s[-1]
'o'
>>> s[0]+s[1]
'he'
二、切片

切片S[i:j]提取对应的部分作为一个序列:
•上边界并不包含在内;
•如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;

•扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;

s[:]获取从偏移量为0到末尾之间的元素

s[1:]获取从偏移量为1到末尾之间的元素

>>> num='abcdefgh'
>>> num[0:2]
'ab'
>>> num[0:6:2]
'ace'
>>> num[:]
'abcdefgh'
>>> num[1:]
'bcdefgh'
>>> num[::-1]         #表示倒序显示所有元素
'hgfedcba'
三、成员操作符(判断子串)

判断一个字符串是不是属于s字符串

>>> a='hello'
>>> 'o' in a
True
>>> 'o' not in a
False
四、连接操作符

>>> a='hello'
>>> b='world'
>>> a+b
'helloworld'
五、重复操作符

>>> "$"*10          #将$重复显示10次
'$$$$$$$$$$'


>>> print "#"*10 + "管理系统" + "#"*10
##########管理系统##########

内置函数

一、计算长度

>>> a='hello'
>>> len(a)
5

二、取最大、最小

In [19]: max('1234')
Out[19]: '4'
In [20]: min('1234')
Out[20]: '1'

三、枚举

#可以同时遍历索引和遍历元素

>>> s='hello'
>>> for i,j in enumerate(s):
...     print i,j
...
0 h
1 e
2 l
3 l
4 o

四、比较

cmp()

五、zip

>>> s='123'
>>> s1='abc'
>>> s2='ABC'
>>> zip(s,s1,s2)
[('1', 'a', 'A'), ('2', 'b', 'B'), ('3', 'c', 'C')]

字符串常用操作

[]里的内容表示可要可不要

str.capitalize()
- 将字符串首字母大写,并返回新的首字母大写后的字符串;

tr.center(width[,fillchar])
- 返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空格填充。

tr.count(sub[, start[, end]]) -> int
- 返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现次数。

str.endswith(suffix[, start[, end]])
- 判断字符串是否以suffix结束,如果start和end指定,则返回str中指定范围内str子串是否以suffix结尾,如果是,返回True;否则返回False
str.startswith(prefix[, start[, end]])

tr.find(sub[,start[,end]])
- 判断sub是否在str中,存在返回索引值,不存在返回-1.
str.index(sub[,start[,end]])
- 与find方法函数功能相同,如果sub不存在时抛出ValueError异常;

str.isalnum() //判断是否都是字母或数字
str.isalpha() //判断是否都是字母
str.isdigit() //判断是否都是数字
str.islower() //判断是否都是小写
str.isspace() //判断是否都是英文空格
str.istitle() //判断是不是都是标题(有大小写)
str.isupper() //判断是不是都为大写字母
str.join(seq)
- 以str作为分隔符,将序列seq中的所有元素合并为一个新的字符串。

In [12]: a='123'
In [13]: b='456'
In [14]: a.join(b)
Out[14]: '412351236'

str.replace(old,new[,count])
- 将str中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换前count个字符串

In [64]: s="h e llo"
In [65]: s.replace(" ","")
Out[65]: 'hello'

tr.split([sep[,maxsplit]])
- 以sep字符串作为分割符对str进行切割,默认为空格;
- maxsplit代表切割的此处

In [66]: a="admin redhat centos"
In [67]: a.split()
Out[67]: ['admin', 'redhat', 'centos']

str.strip([chars])
- 返回一字符串,将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格。

str.lower() //将大写字母转换为小写

str.upper() //将小写字母转换为大写

str.ljust()

-字符串对齐格式化字符串

In [16]: str='hello'
In [17]: str.ljust(30,'*')
Out[17]: 'hello*************************'

str.rjust()

-字符串对齐格式化字符串

In [18]: str='hello'
In [19]: str.rjust(30,'*')
Out[19]: '*************************hello'

题目1:

用户输入一个变量名,判断是否合法

解答:

方法一:运用字符常用操作的知识

#!/usr/bin/env python
# coding:utf-8
"""
变量名的命名规则:由数字、字母、_组成并且不能以数字开头
"""
while True:
    name=raw_input("输入一个变量名:")
    if name[0].isdigit():
        print "变量名不合法(error 1)"
    else:
        for i in name[1:]:
            if not(i.isalnum() or i == "_"):
                print "变量名不合法(error 2)"
                break
        else:
            print "变量名合法"

方法二:使用string函数
In [48]: import string

In [49]: string.digits
Out[49]: '0123456789'

In [50]: string.letters
Out[50]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

#!/usr/bin/env python
# coding:utf-8
"""
变量名的命名规则:由数字、字母、_组成并且不能以数字开头
"""
import string
while True:
    name=raw_input("输入一个变量名:")
    if name[0] == string.digits:
        print "变量名不合法(error 1)"
    else:
        for i in name[1:]:
            if not(i in string.digits or i in string.letters or i == "_"):
                print "变量名不合法(error 2)"
                break
        else:
            print "变量名合法"


0人推荐
随时随地看视频
慕课网APP