python位元組串
『壹』 使用python按位元組分割字元串
按行讀取之後按原文件編碼類型解碼,插入完後按UTF-8解碼寫入文件
以源文件為gbk為例,假設每5字元插入|
python2
withopen('target','w')asf:
forlineopen('source').readlines():
line=line.decode('gbk')
line='|'.join([line[i:min(i+5,len(line))]foriinrange(0,len(line),5)])
f.write(line.encode('utf-8'))
python3
withopen('target','w',encoding='utf-8')asf:
forlineopen('source',encoding='gbk').readlines():
line=line
line='|'.join([line[i:min(i+5,len(line))]foriinrange(0,len(line),5)])
f.write(line)
『貳』 新手,求教關於python3編碼的問題
你需要明白兩個概念:
什麼叫字元串、位元組串
在Python中字元串是指一串可以展示在終端里、供人閱讀的字元,至於字元採用什麼編碼並不重要,同樣的文字,可能是用Unicode、UTF-8或GBK編碼,但列印在終端中的內容相同,那麼就認為是同一串字元串。而位元組串是指將字元串通過某種編碼轉換得到的一串位元組,同樣一個字元串,使用不同的編碼轉換後得到的位元組串可能完全不同。
什麼叫encode、decode
encode中文為編碼,顧名思義,是將字元串以某種編碼形式編碼得到位元組串的過程;相反,decode中文為解碼,是將位元組串以某種編碼形式翻譯得到字元串的過程。
a是一個字元串,它的內容是「周傑倫」這三個字,類型是str;b = a.encode('utf-8')是將a以utf-8形式編碼得到的位元組串,它的內容是「周傑倫」這三個字的utf-8編碼,類型是bytes。
『叄』 python3如何把字元串轉換成系統默認編碼
python 3和2很大區別就是python本身改為默認用unicode編碼。
字元串不再區分"abc"和u"abc", 字元串"abc"默認就是unicode,不再代表本地編碼、
由於有這種內部編碼,像c#和java類似,再沒有必要在語言環境內做類似設置編碼,比如「sys.setdefaultencoding」;
也因此也python 3的代碼和包管理上打破了和2.x的兼容。2.x的擴展包要適應這種情況改寫。
另一個問題是語言環境內只有unicode怎麼輸出gbk之類的本地編碼。
答按慣例都在(序列化)輸出時才轉換成本地編碼。
比如
1
file.write("GBK的中文".encode("GBK"))
python環境內字元串用str.encode("GBK")方法輸出成位元組串用於和其他環境交流。
『肆』 python定義一個單位元組類型數組
Python中沒有數組的數據結構,但列表很像數組。
和字元串一樣,位元組類型也是不可變序列,而位元組數組就是可變版本的位元組,它們的關系就相當於list與tuple。
位元組(位元組數組)是二進制數據組成的序列,其中每個元素由8bit二進制即1byte亦即2位十六進制數亦亦即0~255組成,位元組是計算機的語言,字元串是人類語言,它們之間通過編碼表形成一一對應的關系。
『伍』 python struct 格式符b 為什麼是兩個位元組
整個代碼是把data每兩個字元變成一個位元組,比如"7F"變成一個值127的byte。struct.pack()參數B指按Byte轉換。輸出的byte_dat是一個位元組串,類似b"\xEF"。
+號的含義因該是拼接,把後轉換的一個位元組拼接在之前積累的數據後面。b""前綴是位元組串,不是字元串。
『陸』 python中怎樣將位元組串寫入文件里
with open('output.txt', 'w') as fout:
print >>fout, string_you_want_output
『柒』 在Python中如何將字元串轉換成位元組對象
python 怎麼將字元串轉換為byte
1、command元素——貌似沒什麼效果。是不是支持有問題
表示命令按鈕,比如單選按鈕、復選框或按鈕。
只有當 command 元素位於 menu 元素內時,該元素才是可見的。否則不會顯示這個元素,但是可以用它規定鍵盤快捷鍵。。
<menu>
<command onclick="alert('Hello World')">
Click Me!</command>
</menu>
2、details標簽 目前只有 Chrome 支持 details 標簽
用於描述文檔或文檔某個部分的細節 。
可與 summary 標簽配合使用,summary可以為 details 定義標題。標題是可見的,用戶點擊標題時,會顯示出 details。summary應該是details的第一個子元素。
『捌』 Python 2.7 中位元組字元串的處理求助
唔,你也沒寫具體問題…… 給你個python的字元串處理匯總吧。
str='python String function'
生成字元串變數str='python String function'
字元串長度獲取:len(str)
例:print '%s length=%d' % (str,len(str))
一、字母處理
全部大寫:str.upper()
全部小寫:str.lower()
大小寫互換:str.swapcase()
首字母大寫,其餘小寫:str.capitalize()
首字母大寫:str.title()
print '%s lower=%s' % (str,str.lower())
print '%s upper=%s' % (str,str.upper())
print '%s swapcase=%s' % (str,str.swapcase())
print '%s capitalize=%s' % (str,str.capitalize())
print '%s title=%s' % (str,str.title())
二、格式化相關
獲取固定長度,右對齊,左邊不夠用空格補齊:str.ljust(width)
獲取固定長度,左對齊,右邊不夠用空格補齊:str.ljust(width)
獲取固定長度,中間對齊,兩邊不夠用空格補齊:str.ljust(width)
獲取固定長度,右對齊,左邊不足用0補齊
print '%s ljust=%s' % (str,str.ljust(20))
print '%s rjust=%s' % (str,str.rjust(20))
print '%s center=%s' % (str,str.center(20))
print '%s zfill=%s' % (str,str.zfill(20))
三、字元串搜索相關
搜索指定字元串,沒有返回-1:str.find('t')
指定起始位置搜索:str.find('t',start)
指定起始及結束位置搜索:str.find('t',start,end)
從右邊開始查找:str.rfind('t')
搜索到多少個指定字元串:str.count('t')
上面所有方法都可用index代替,不同的是使用index查找不到會拋異常,而find返回-1
print '%s find nono=%d' % (str,str.find('nono'))
print '%s find t=%d' % (str,str.find('t'))
print '%s find t from %d=%d' % (str,1,str.find('t',1))
print '%s find t from %d to %d=%d' % (str,1,2,str.find('t',1,2))
#print '%s index nono ' % (str,str.index('nono',1,2))
print '%s rfind t=%d' % (str,str.rfind('t'))
print '%s count t=%d' % (str,str.count('t'))
四、字元串替換相關
替換old為new:str.replace('old','new')
替換指定次數的old為new:str.replace('old','new',maxReplaceTimes)
print '%s replace t to *=%s' % (str,str.replace('t', '*'))
print '%s replace t to *=%s' % (str,str.replace('t', '*',1))
五、字元串去空格及去指定字元
去兩邊空格:str.strip()
去左空格:str.lstrip()
去右空格:str.rstrip()
去兩邊字元串:str.strip('d'),相應的也有lstrip,rstrip
str=' python String function '
print '%s strip=%s' % (str,str.strip())
str='python String function'
print '%s strip=%s' % (str,str.strip('d'))
按指定字元分割字元串為數組:str.split(' ')
六、默認按空格分隔
str='a b c de'
print '%s strip=%s' % (str,str.split())
str='a-b-c-de'
print '%s strip=%s' % (str,str.split('-'))
七、字元串判斷相關
是否以start開頭:str.startswith('start')
是否以end結尾:str.endswith('end')
是否全為字母或數字:str.isalnum()
是否全字母:str.isalpha()
是否全數字:str.isdigit()
是否全小寫:str.islower()
是否全大寫:str.isupper()
str='python String function'
print '%s startwith t=%s' % (str,str.startswith('t'))
print '%s endwith d=%s' % (str,str.endswith('d'))
print '%s isalnum=%s' % (str,str.isalnum())
str='pythonStringfunction'
print '%s isalnum=%s' % (str,str.isalnum())
print '%s isalpha=%s' % (str,str.isalpha())
print '%s isupper=%s' % (str,str.isupper())
print '%s islower=%s' % (str,str.islower())
print '%s isdigit=%s' % (str,str.isdigit())
str='3423'
print '%s isdigit=%s' % (str,str.isdigit())
『玖』 Python位元組,每位元組的異或解密問題,怎麼解決
1.先將int轉為hex字元串,去掉'0x',然後對位數判斷,比如1-->0x01(而不是0x1),22-->0x16;
2.直接將字元串轉為bytearray,比如'0x123456'-->0x12 x34 x56(忽略轉義表示,此處只是討論使用方法);
3.直接將bytearray轉為bytes
defhexPos(num):
val=hex(int(num))[2:]
iflen(val)%2!=0:
val='0'+val
y=bytearray.fromhex(val)
iflen(y)!=4:
x=bytearray(4-len(y))
returnbytes(x+y)
『拾』 Python 讀取的位元組流轉換為字元串
不需要unpack,使用decode即可
例如我在一個文件中寫入'a\x00b\x00c\x00d\x00'
然後使用binary
stream打開文本,使用decode轉換即可
with
open(
'data'
,'rb'
)
as
f:
print(
f.read(
).decode(
'UTF-16'
)
)
你只要將讀取的位元組流轉換成str替換f.read(
)即可