Python raw字符串(raw strings)
轉自http://blog.sina.com.cn/s/blog_6a6c136d0102wzrj.html
raw字符串
s =r'C:\new'中,r''的功能就是把"\n"變成"\\n",從而使轉義字符失效。但python中好像沒有用來對一個字符串變量進行raw轉換的函數,今天遇到了類似於counrty='u.k.'這樣的國家名稱,把country放到正則表達式中,不能正確的匹配,是因爲包含'.'字符的緣故('.'在正則表達式中是一個元字符,可以代表任意字符)。
如果字符串中不帶轉義字符,則帶不帶r'',字符串的意思都是一樣的,例如
spam = r'hello'
eggs = 'hello'
上面兩個變量表示字符串沒有任何差別。
下面是一個小測試:
>>> t1 = '\n' #非raw字符,也就是轉義字符,表示'換號'
>>> t1
'\n'
>>> print t1
>>> t2 ='skkskdjk \tskdsk \n'
>>> len(t2) #在非raw字符串中,\t和\n表示一個字符,所以t2的長度爲15
15
>>> for x int2:
printrepr(x)
's'
'k'
'k'
's'
'k'
'd'
'j'
'k'
'\t'
's'
'k'
'd'
's'
'k'
'\n'
>>> t3 = t2.replace('\t',r'\t').replace('\n', r'\n') #替換轉義字符
>>> t3
'skkskdjk\\tskdsk\\n'
>>> len(t3) #替換後,'\\'表示'\','t'表示't'本身,所以t3的長度爲17
17
將一個字符串變量轉換成raw字符串:
escape_dict={'\a':r'\a',
'\b':r'\b',
'\c':r'\c',
'\f':r'\f',
'\n':r'\n',
'\r':r'\r',
'\t':r'\t',
'\v':r'\v',
'\'':r'\'',
'\"':r'\"',
'\0':r'\0',
'\1':r'\1',
'\2':r'\2',
'\3':r'\3',
'\4':r'\4',
'\5':r'\5',
'\6':r'\6',
'\7':r'\7',
'\8':r'\8',
'\9':r'\9'}
def raw(text): #將每個可能的轉義字符都進行了替換
"""Returnsa raw string representation of text"""
new_string=''
for charin text:
try:new_string+=escape_dict[char]
except KeyError:new_string+=char
returnnew_string
參考:
http://www.jb51.net/article/56154.htm
http://www.gossamer-threads.com/lists/python/python/75572 # 這裏對raw string的解釋很不錯
http://code.activestate.com/recipes/65211-convert-a-string-into-a-raw-string/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.