python 讀取txt出現\xef\xbb\xbf…的問題

CopperDong發表於2017-11-19

用python讀取txt檔案,檔案的內容是一列數如下:

1883
1886
1900
1900
1897
1897
1897
1897
1906
1917
1910
1910
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

但是讀取的時候第一個元素為‘\xef\xbb\xbf1883’,上網看了一些資料,原來在python的file物件的readline以及readlines程式中,針對一些UTF-8編碼的檔案,開頭會加入BOM來表明編碼方式。 
解決方法有很多種: 
1.這篇部落格引用codecs模組,來判斷前三個位元組是否為BOM_UTF8。如果是,則剔除\xef\xbb\xbf位元組。 
2.另外還有很多解決方案,可以判斷列表中是否有\xef\xbb\xbf字元,如果有,用replace()替換為空的,程式碼如下:



f = open("2017-5-17-1.txt","r")
lightSen = []

for line in f.readlines():
    if '\xef\xbb\xbf'  in line:
        str1 = line.replace('\xef\xbb\xbf','')#用replace替換掉'\xef\xbb\xbf'
        lightSen.append(int(str1.strip()))#strip()去掉\n
    else:
        lightSen.append(int(line.strip()))


print(lightSen)

f.close

相關文章