⑴ 如何用python將utf8編碼的16進制字元串轉換成對應的文字
#coding:utf-8
'''
參考用
mystery=b"xe5x88xab"
x=mystery.decode('utf-8')
print(x)
y=bytearray.fromhex(xe5x88xab).decode()
print(y)
'''
var=1
whilevar==1:
a=input('輸入UTF-8的16進制編碼: ')
b=list(a)
#print(b)
leng=len(b)
i=0
while(i<(1.5*leng)):
b.insert(i,'\x')
i+=3
#print(b)
c=str(''.join(b))
#print(c)
d='b'+"'"+c+"'"
#print(d)
x=eval(d).decode('utf8')
print('轉換結果為: {} '.format(x))
我這個是輸入沒有x這種形式的,如輸入「44」(代表「D」的16進制UTF8碼),輸出"D"
如果你需要輸入形如x44這種,需要自己修改一下。
⑵ python字元串與url編碼的轉換實例
python字元串與url編碼的轉換實例
今天小編就為大家分享一篇python字元串與url編碼的轉換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
主要應用的場景
爬蟲生成帶搜索詞語的網址
1.字元串轉為url編碼
import urllib
poet_name = "李白"
url_code_name = urllib.quote(poet_name)
print url_code_name
#輸出
#%E6%9D%8E%E7%99%BD
2.url編碼轉為字元串
import urllib
url_code_name = "%E6%9D%8E%E7%99%BD"
name = urllib.unquote(url_code_name)
print name
#輸出
#李白
以上這篇python字元串與url編碼的轉換實例就是小編分享給大家的全部內容了篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助
⑶ Python處理字元串必備方法
字元串是Python中基本的數據類型,幾乎在每個Python程序中都會使用到它。
▍1、Slicing
slicing切片,按照一定條件從列表或者元組中取出部分元素(比如特定范圍、索引、分割值)
▍2、****strip()
strip()方法用於移除字元串頭尾指定的字元(默認為空格或換行符)或字元序列。
在使用strip()方法時,默認去除空格或換行符,所以#號並沒有去除。
可以給strip()方法添加指定字元,如下所示。
此外當指定內容不在頭尾處時,並不會被去除。
第一個 前有個空格,所以只會去取尾部的換行符。
最後strip()方法的參數是剝離其值的所有組合,這個可以看下面這個案例。
最外層的首字元和尾字元參數值將從字元串中剝離。字元從前端移除,直到到達一個不包含在字元集中的字元串字元為止。
在尾部也會發生類似的動作。
▍3、****lstrip()
移除字元串左側指定的字元(默認為空格或換行符)或字元序列。
同樣的,可以移除左側所有包含在字元集中的字元串。
▍4、rstrip()
移除字元串右側指定的字元(默認為空格或換行符)或字元序列。
▍5、****removeprefix()
Python3.9中移除前綴的函數。
和strip()相比,並不會把字元集中的字元串進行逐個匹配。
▍6、removesuffix()
Python3.9中移除後綴的函數。
▍7、****replace()
把字元串中的內容替換成指定的內容。
▍8、****re.sub()
re是正則的表達式,sub是substitute表示替換。
re.sub則是相對復雜點的替換。
和replace()做對比,使用re.sub()進行替換操作,確實更高級點。
▍9、****split()
對字元串做分隔處理,最終的結果是一個列表。
當不指定分隔符時,默認按空格分隔。
此外,還可以指定字元串的分隔次數。
▍10、****rsplit()
從右側開始對字元串進行分隔。
▍11、****join()
string.join(seq)。以string作為分隔符,將seq中所有的元素(的字元串表示)合並為一個新的字元串。
▍12、****upper()
將字元串中的字母,全部轉換為大寫。
▍13、****lower()
將字元串中的字母,全部轉換為小寫。
▍14、capitalize()
將字元串中的首個字母轉換為大寫。
▍15、****islower()
判斷字元串中的所有字母是否都為小寫,是則返回True,否則返回False。
▍16、isupper()
判斷字元串中的所有字母是否都為大寫,是則返回True,否則返回False。
▍17、****isalpha()
如果字元串至少有一個字元並且所有字元都是字母,則返回 True,否則返回 False。
▍18、isnumeric()
如果字元串中只包含數字字元,則返回 True,否則返回 False。
▍19、isalnum()
如果字元串中至少有一個字元並且所有字元都是字母或數字,則返回True,否則返回 False。
▍20、count()
返回指定內容在字元串中出現的次數。
▍21、****find()
檢測指定內容是否包含在字元串中,如果是返回開始的索引值,否則返回-1。
此外,還可以指定開始的范圍。
▍22、rfind()
類似於find()函數,返回字元串最後一次出現的位置,如果沒有匹配項則返回 -1。
▍23、startswith()
檢查字元串是否是以指定內容開頭,是則返回 True,否則返回 False。
**
**
▍24、****endswith()
檢查字元串是否是以指定內容結束,是則返回 True,否則返回 False。
▍25、****partition()
string.partition(str),有點像find()和split()的結合體。
從str出現的第一個位置起,把字元串string分成一個3 元素的元組(string_pre_str,str,string_post_str),如果string中不包含str則 string_pre_str==string。
▍26、center()
返回一個原字元串居中,並使用空格填充至長度width的新字元串。
▍27、ljust()
返回一個原字元串左對齊,並使用空格填充至長度width的新字元串。
▍28、rjust()
返回一個原字元串右對齊,並使用空格填充至長度width的新字元串。
▍29、f-Strings
f-string是格式化字元串的新語法。
與其他格式化方式相比,它們不僅更易讀,更簡潔,不易出錯,而且速度更快!
▍30、swapcase()
翻轉字元串中的字母大小寫。
▍31、zfill()
string.zfill(width)。
返回長度為width的字元串,原字元串string右對齊,前面填充0。
參考文獻: https://mp.weixin.qq.com/s/9cuO-KL3g9ldqRGGZBVnjw
⑷ Python 編碼轉換與中文處理
python 中的 unicode 是讓人很困惑、比較難以理解的問題. 這篇文章 寫的比較好, utf-8是 unicode的一種實現方式,unicode、gbk、gb2312是編碼字元集.
Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用" 編碼指示 "來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的編碼如:gbk、gb2312也可以;否則會出現:
先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode ,他們都是basestring的派生類;
在str的文檔中有這樣的一句話:
也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。
unicode 轉為 gb2312,utf-8等,使用 encode(encoding)
utf-8,GBK轉換為 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)
普通的 str 轉為 unicode,
如果直接執行s.encode('gb2312')會發生什麼?
這里會發生一個異常:Python 會自動的先將 s 解碼為 unicode ,然後再編碼成 gb2312。因為解碼是python自動進行的,我們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是 ANSCII,如果 s 不是這個類型就會出錯。
拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯了:
對於這種情況,我們有兩種方法來改正錯誤:
s = '中文'
s.decode('utf-8').encode('gb2312') ```
import sys
reload(sys) # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')
print open("Test.txt").read()
import codecs
print open("Test.txt").read().decode("utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")
s = "中文"
print unicode(s, "utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data
s = "中文"
print unicode(s, "gbk")
s = "中文"
print unicode(s, "cp936")
⑸ Python字元編碼使用什麼碼
在python 2中默認編碼是ASCII,而在python 3中默認編碼是unicode。
⑹ Python濡備綍灝哢nicode涓鏂囧瓧絎︿覆杞鎹㈡垚 string瀛楃︿覆
Unicode瀛楃︿覆鍙浠ョ敤澶氱嶆柟寮忕紪鐮佷負鏅閫氬瓧絎︿覆錛屽亣璁緐nicodestring = u"Hello world"錛屼緷鐓ф墍閫夋嫨鐨勭紪鐮(encoding)錛屽備笅錛
1銆#灝哢nicode杞鎹㈡垚鏅閫氱殑Python瀛楃︿覆:"緙栫爜(encode)"銆
鎵╁睍璧勬枡錛
Python杞鎹㈠瓧絎﹀拰瀛楃︿覆鐨勫師鍥狅細涓轟簡澶勭悊涓嶉傚悎鐢ˋSCII瀛楃﹂泦琛ㄧず鐨勬暟鎹銆
鍦ㄤ互ASCII鐮佷負涓蹇冪殑璇璦鍜岀幆澧冧腑錛屽瓧鑺傚拰瀛楃﹁褰撳仛鐩稿悓鐨勪簨鐗┿傜敱浜庝竴涓瀛楄妭鍙鑳芥湁256涓鍊礆紝榪欎簺鐜澧冨氨鍙楅檺涓哄彧鏀鎸256涓瀛楃Unicode鐮侊紝鍙︿竴鏂歸潰錛屾湁鏁頒竾涓瀛楃︼紝閭f剰璋撶潃姣忎釜Unicode瀛楃﹀崰鐢ㄥ氫釜瀛楄妭錛屽洜姝わ紝浣犻渶瑕佸湪瀛楃﹀拰瀛楄妭涔嬮棿浣滃嚭鍖哄埆銆
錛1錛塙TF-8緙栫爜鑳藉勭悊浠諱綍鐨刄nicode瀛楃︺傚畠涔熸槸涓嶢SCII鐮佸悜鍚庡吋瀹圭殑錛屽洜姝や竴涓綰綺圭殑ASCII鐮佹枃浠朵篃鑳借鑰冭檻涓轟竴涓猆TF-8鏂囦歡錛岃屼笖涓涓紕板閥鍙浣跨敤ASCII鐮佸瓧絎︾殑 UTF-8鏂囦歡鍜屾嫢鏈夊悓鏍峰瓧絎︾殑ASCII鐮佹枃浠舵槸鐩稿悓鐨勩
榪欎釜鐗規т嬌寰桿TF-8鐨勫悜鍚庡吋瀹規ч潪甯稿ソ,灝ゅ叾浣跨敤杈冩棫鐨刄nix宸ュ叿鏃躲俇TF-8 鏃犵枒鍦版槸鍦 Unix涓婄殑鍗犱紭鍔跨殑緙栫爜銆傚畠涓昏佺殑寮辯偣鏄瀵逛笢鏂規枃瀛楁槸闈炲父浣庢晥鐨勩
錛2錛塙TF-16緙栫爜鍦ㄥ井杞鐨勬搷浣滅郴緇熷拰Java鐜澧冧笅鍙楀埌鍋忕埍銆傚畠瀵硅タ鏂硅璦鏄姣旇緝浣庢晥,浣嗗逛簬涓滄柟璇璦鏄鏇存湁鏁堢巼鐨勩備竴涓猆TF-16 鐨勫彉浣撴湁鏃跺彨浣淯CS-2 銆
錛3錛塈SO-8859緙栫爜緋誨垪鏄256涓瀛楃︾殑ASCII鐮佺殑瓚呴泦銆備粬浠涓嶈兘澶熸敮鎻存墍鏈夌殑Unicode鐮佸瓧絎;浠栦滑鍙鑳芥敮鎻翠竴浜涚壒鍒鐨勮璦鎴栬璦瀹舵棌銆
ISO-8859-1,涔熸棦Latin-1,鍖呮嫭澶у氭暟鐨勮タ嬈у拰闈炴床璇璦,浣嗘槸涓嶅惈闃挎媺浼璇銆侷SO-8859-2,涔熸棦Latin-2,鍖呮嫭璁稿氫笢嬈х殑璇璦,鍍忔槸鍖堢墮鍒╄鍜屾嘗鍏拌銆
鍙傝冭祫鏂欙細
鐧懼害鐧劇--Unicode