python string用法學習ing

#!/usr/bin/env python
#-*- coding:UTF-8 -*-
#####################################################
# Author: sunfx   [email protected]
# Last modified:  2014/11/11
# Filename:  string.py
# Q  Q  羣:  236147801
#####################################################
import re
import string

str = 'I love python'

#1.生成20個字符長度

print str.center(20)

#2.字符左對齊

print str.ljust(20)

#3.字符右對齊

print str.rjust(20)

#4.str右對齊,左邊填充0

print str.zfill(20)

#5.所有字符大寫

print str.upper()

#6.所有字符轉小寫

print str.lower()

#7.所有單詞的首字母大寫

s = 'Thi quick brown fox jumped over the lazy  dog.'

print s
print string.capwords(s)

#8.大小寫對換

print str.swapcase()

#9.已分割符爲標記,首字符大寫,其餘小寫

print str.title()

#10.模版轉換 字符替換 比replace更有效率

leet = string.maketrans('abegiloprstz','463611092572')
s = 'Thi quick brown fox jumped over the lazy  dog.'

print s
print s.translate(leet)

str = '0123'

#11.是否全部是字母和數字,並至少有一個字符

print str.isalnum()

#12.是否全部是數字,並至少有一個字符

print str.isdigit()

#13.判斷是否全是字母,並且至少一個字符

print str.isalpha()

#14.判斷是否是小寫,當全是小寫和數字一起時候,也判斷爲True

print str.islower()

#15.判斷是否是空白字符,並且至少有一個字符

print str.isspace()

#16.判斷字符是否以str開頭

print str.startswith('str')

#17.判讀字符是否以str結尾

print str.endswith('str')

str = 'string 1EAMD'

#18.查找字符,沒有返回-1,有責返回查到第一個匹配的索引

print str.find('a')

#19.查找字符,沒有返回-1,有責返回查到最後一次匹配的索引

print str.rfind('a')

#20.查找字符,如果沒有報錯,有責返回查到第一個匹配的索引

print str.index('s')

#21.查找字符,沒有報錯,有責返回查到最後一次匹配的索引

print str.rindex('s')

#22.查找字符串在字符中出現的次數

print str.count('s')

#23.替換匹配的字符

print str.replace('s','A')

#24.刪除字符串首尾匹配的字符,通用用於刪除回車符

print str.strip('n')

#25.刪除左邊匹配的字符

print str.lstrip('n')

#26.刪除右邊匹配的字符

print str.rstrip('n')

#27.把製表符轉爲空格

str = '    tab'
print str.expandtabs()

str = '我在學習'

#28.解碼過程,將utf-8解碼爲unicode

print str.decode('utf-8')

#29.編碼過程,將unicode編碼爲gbk

print str.decode('utf-8').encode('gbk')

#30.講unicode編碼爲utf-8

print str.decode('utf-8').encode('utf-8')

#31.字符分割

str = 'Learn string'

print '-'.join(str)

#32.以什麼爲分割

print str.split(' ')

#33.模版Template 

values = {'var':'foo'}

t = string.Template("""
    Variale       : $var
    Escape        : $$
    Variable in text: ${var}iable
	""")

print 'TEMPLATE:',t.substitute(values)


s = """
    Variale       : %(var)s
    Escape        : %%
    Variable in text: %(var)siable
	"""

print 'INTERPOLATION:', s % values

#34.Template 異常處理

t = string.Template("$var is here but $missing is not provided")

try:

    print 'substitute() :',t.substitute(values)

except KeyError, err:

	print 'ERROR:',str(err)

print 'safe_substitute():',t.safe_substitute(values) 

#36.高級模版

template_text = '''
    Delimiter : %%
    Replaced  : %with_underscore
    Ignored   : %notundersocred
'''
#37.可以自定義Templace 轉換規則

d = { 'with_underscore':'replaced',
      'notundersocred':'not replaced'
}

class MyTemplate(string.Template):

	delimiter = '%'
	idpattern = '[a-z]+_[a-z]+'


t = MyTemplate(template_text)
print 'Modified ID pattern:'
print t.safe_substitute(d)


#38.自定義更復雜的規則


t = string.Template('$var')
print t.pattern.pattern

'''
    \$(?:
      (?P<escaped>\$) |   # Escape sequence of two delimiters #忽略的分隔符
      (?P<named>[_a-z][_a-z0-9]*)      |   # delimiter and a Python identifier #python分隔符的標識(也就是變量)
      {(?P<braced>[_a-z][_a-z0-9]*)}   |   # delimiter and a braced identifier #分隔符和一個支撐的標識
      (?P<invalid>)              # Other ill-formed delimiter exprs #無效的
    )
'''


class MyTemplate(string.Template):

	delimiter = '{{' #定義轉義符
	pattern = r'''
	\{\{(?:
    (?P<escaped>\{\{) |
    (?P<named>[_a-z][_a-z0-9]*)\}\} |
    (?P<braced>[_a-z][_a-z0-9]*)\}\} |
    (?P<invalid>)  
	)
	'''

t = MyTemplate('''
    {{{{
    `var`
	''')	

print t.template #查看template的值
print 'MATCHES:',t.pattern.findall(t.template) #查看正則匹配到的字符
print 'SUBSTIITUTED:',t.safe_substitute(var='replacement') #使用替換
print MyTemplate.delimiter  #查看mytemplate轉義符
print string.Template.delimiter  #查看string轉義符


#http://legacy.python.org/dev/peps/pep-0292/

#格式化段落

#39.填充段落  左對齊,第一行縮進,行中空格繼續保留
import textwrap

sample_text = '''
     The textwrap modulde can be used to format text for output in
     situations where pretty-parinting is desired. It offers 
     programmatic functionality similar to the paragraph wrapping
     or filling features found in myany text editors.
'''


print 'No dedent:\n'
print textwrap.fill(sample_text,width=50)

#40.去除現有縮進(去除行中所有的空格)
dedemted_text = textwrap.dedent(sample_text)
print dedemted_text

#41.結合fill和dedent 指定輸出文字的寬度

dedemted_text = textwrap.dedent(sample_text).strip()
print dedemted_text
for width in [45,70]:
	print '%d Columns:\n' % width
	print textwrap.fill(dedemted_text,width=width)
	print

#42.懸掛縮進

print textwrap.fill(dedemted_text,
	                initial_indent='',  #定義文本第一行縮進的長度
	                subsequent_indent='    ' * 4,  #定義其他行的縮進
	                width=50 #定義文本長度,默認75
	)	


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章