python之序列之字符串

上一篇 / 下一篇  2013-10-17 14:02:17 / 个人分类:python

#序列:某个元素可以通过制定一个偏移量的方式得到。多个元素可以通过切片得到。偏移量从0 - 总元素个数-1
#1、序列类型操作符
    #a.成员操作符(in ,not in):对象 in 序列 返回的是Ture  False
seq1 = ['a','b']
seq2 = ['a']
print seq2 in seq1     #False
print seq2 not in seq1   #True
print 'a' in seq1   #True
    #b.连接操作符(+):sequence1 + sequence2 ,将两个序列连成一个序列
print seq2 + seq1
print seq1.append(seq2)
    #c.重复操作符(*):sequence*copy_int copy_int必须是一个整数,把序列拷贝多次
print seq1*3
    #d.切片操作符:[:][],[::]
seq = [1,2,3,4,56,67,878,6,6,5,4,3,3]
print seq[1]   #偏移量:整数 0 到长度-1 ,负数范围  -(len(seq)) 到 -1
print seq[:]    #第一个为起始值,第二个为结束值,输出结果不包含结束索引的值。不写表示从0到最后一个索引,会输出所有值
print seq[:2]
print seq[::2]  #第三个参数是步长,输出的间隔数,
    #练习:把一个序列的输出从后面一个一个的减少
s = 'abcdeggfdsa'
for i in range(-1,-len(s),-1):
    print s[:i]
    #上面的输出少了s的全部输出,做一下改进
s = 'abcdeggfdsa'
for i in [None]+range(-1,-len(s),-1):
    print s[:i]    
    #e.内建函数(BIF)
    #序列类型转换函数:list(iter):可迭代对象转换为list   str(obj):把obj转换为str字符串类型 unicode(obj):把obj转换为unicode字符串
                    #basestring():不能被实例化,是为str()和unicode函数做父类   tupe(iter):把一个可迭代对象转换为元组对象
    #一个python对象被创建后便不能更改其身份或类型,当使用上面的函数后,其实是创建这个对象的一个浅拷贝,这样只是拷贝了对象的索引,而不是重新创建了一个对象,
    #可操作函数:len() reversed() sum()只能接受序列类型对象作为参数
             #enumerate(iter):接受一个可迭代的对象作为参数,返回一个enumerate对象(也是一个迭代器),该对象生成有iter每个元素的index值和iterm值组成的元组
             #len(seq):返回seq的长度
             #max(iter,key = None)or max(arg1,arg2....,key = None):返回iter或(arg1,arg2..)的最大值,如果指定了key,该key必须是可以传递给sort()的用于比较的回调函数
             #min(iter,key = None)or min(arg1,arg2....,key = None):同上max()
             #reversed(seq):接受一个序列,返回一个逆序列
             #sorted(iter,func None,key = None,reverse = False):接受一个可迭代参数,返回一个列表。key 和reverse同上
             #sum(seq,init = 0):返回seq和可选参数init的总和。等同于reduce(operator.add,seq,init)
             #zip([it0,it1,...itN]):返回一个列表,第一个元素是[it0],第二个元素[it0,it1]...,依次类推
    
#2、字符串:python有三种类型的字符串:str unicode basestring(basestring是抽象类,不能实例化)
    #字符串的创建和赋值
aString = 'hello word'
anString = "hello world"
print aString
print anString
s = str(range(4)) #把一个列表转换成一个字符串
print s
print range(4)
    #访问字符串的值
print aString[0]
print aString[1:5]
    #改变字符串:字符串是不可变的,只能通过重新赋值来‘更新’一个字符串:不能只改变一个字符串的一个字符或一个子串,但是可以通过拼凑如下可以重新获得旧串的部分
aString = aString[:6] + 'python'
print aString
aString = 'diffenrent string altogether'
print aString
    #如何删除字符和字符串:1、可以通过拼凑来删除字符串的某个或某几个字符。2、通过del 删除  3 通过赋予空值
print aString[:3] + aString[4:]
aString = ""
print aString
del aString

#3、字符串和操作符
    #标准类型操作符:在做比较时,使用ASCII值来比较的
str1 = 'abc'
str2 = 'def'
print str1 > str2
print str1 != str2
print str1 < str2 and str1 == 'abc'

    #序列切片操作符[] [:]:正向索引:[0,len(s)-1],反向索引:[-(len(s)),-1],默认索引
s = 'abcdefghijklmnp'
print len(s)
print s[:]
print s[2:-3]
    #成员操作符:in ,not in ,判断一个字符串是否出现在另一个字符串中,是返回True ,否则返回False.它不是用来判断一个字符串是否包含另一个字符串,包含使用find(),index()
print 'bc' in 'abcd'
print 'nm' not in 'avd'
    #string模块中的预定义的字符串
import string
print string.uppercase
print string.lowercase
print string.letters
print string.digits
    #练习:检查标示符正确不正确,标示符有字母/下划线开头,由字母、数字、下划线组成
import string
alphas = string.letters + '_'
num = string.digits
print 'welcome to the identify checker1.0'
print 'please enter at least 2 chars long'
myInput = raw_input('please enter your identfier:')
if len(myInput)> 1:
    if myInput[0] not in alphas:
        print 'invalid:first symbol must e alphabetic'
    else:
        for otherchar in myInput[1:]:  
            if otherchar not in alphas + num:           #为了提高效率,可以alphasnum = alphas + num ,避免多次计算
                print 'i41SAnvalid:remaining symbols must be alpanumeric'
            else:
                print 'okay as an identifier'

    #连接字符串,连接符:+
print 'abcde' + 'cdfg'
print 'abcde' + " " + 'cdfg'
print 'abcd ' + 'cdfg '+ 'mki f'  #不推荐导入string模块。因为必须为每一个参加连接操作的字符串分配新的内存,包括产生的字符串 
import string
s = 'avcdejogAFGDFG'
print string.upper(s[:3] + s[-1])
print string.upper(s[:3])+ string.lower(s[-4:])     #upper()转为大写字母,lower()转为小写字母
print '%s %s'%('spanish','Inquisition')      #以下是推荐的方式
print ''.join (('zhaoyehong',' welcome to ' ,'china'))
print ('%s %s'%(s[:4],s[-1])).upper()
    #编译时连接字符串
foo = 'zhaoyehong'" welcome to you"
print foo
    #普通字符串转换为unicode:把一个普通字符串和一个unicode字符串连接,python会在连接前把普通的字符串转换为unicode字符串
print 'hello' + u' '+ ' world' + u'!'
print ''.join(['*'*4,'nihao'])

#4、只适用于字符串的操作符
    #格式化操作符:%
print '%x'%108 #转换为16进制
print '%X'%108
print '%#x'%108  #  #表示在16进制的输出中以0x开头,八进制的输出中以0开头
print '%f'%1234.45465435
print '%.2f'%12432543.546566 #保留两位小数
print '%e'%1232435.46547  #转为科学数记法
print '%+d'%4  #输出为+4,+d表示正数、整数
print '%+d'%-4  #输出-4
print '%s'%('string')
    #原始字符串操作符 r/R
print r'\n'     #输出 \n
print '\n'      #输出空的,换行
    #Unicode字符串操作符 u/U
print u'abc'
print u'\nabc'
print u'abc\n124\nabc'
print ur'abc\n1234\nabc'

#5、内建函数
str1 = 'abc'
str2 = 'lmn'
print cmp(str1,str2) #标准函数类型
print len(str1)     #序列类型函数
print max(str1)
print min(str2)     #都是比较的ASCII
s = 'foobar'
for i ,t in enumerate(s):
    print i,t
s,t = 'fooa','obr'
print zip(s,t)
print zip('fooa')
user_input = raw_input('please enter a string:') #输入函数
print isinstance(u'\0xab',str)       #工厂函数str(),unicode(),basestring()都可以作为参数产地给isinstance(),该函数返回值为True False
print chr(12)   #chr()函数以range(256)的整数作为参数,返回ascii对应的字符
print unichr(12)   #unichr()函数以range(256)的整数作为参数,返回ascii对应的unicode字符
print ord('a')    #ord()函数是chr() unichr()函数对应的函数,输入字符,返回对应的数字
    #字符串常用的方法
quest = 'what is your favorate color?'
print quest.capitalize()     #将首字母变为大写
print quest.center(40)      #返回字符串并居中,用空格填充之40长度
print quest.count('or')     #返回or在字符串长出现的次数
print quest.endswith('en')  #判断是否以en结束,返回False
print quest.find('or',30)   #返回or的索引,这里是查找在索引30开始的时候有没有or,返回-1
print quest.index('or',10)   #同find()方法,不过如果不存在,则会报异常
print quest.replace('favorate color','quest')
print quest.upper()
print ':'.join(quest.split())   #split()分割字符串,join(),连接字符串
hi = '''
    zhaoyehong is
    a da huai dan
'''
print hi  #三引号:允许一个I饿字符串跨多行,可以包含换行服,制表符,和其他特殊字符

    #python的unicode支持
    #内建函数:unicode():接受一个string,返回unicode字符串
    #内建的decode()和encode()方法:分别返回的是解码/编码后的字符串
    #unicode()和unichar()相当于字符串的str()和chr().
#unicode例子
CODEC = 'UTF-8'
FILE = 'g://unicode.txt'
hello_out= u'hello world'
byte_out = hello_out.encode(CODEC)
f = open(FILE,'w')
f.write(byte_out)
f.close()
f = open(FILE,'r')
byte_in = f.read()
f.close()
hello_in = byte_in.decode(CODEC)
print hello_in,


TAG:

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 15397
  • 日志数: 25
  • 建立时间: 2013-07-27
  • 更新时间: 2013-10-22

RSS订阅

Open Toolbar