Python \ufeff

說明

遇到這個問題真的是只能記錄下來,不然很快又會忘記了.... 今天讀取 csv 檔案時,使用 row[欄位名稱] 試了很多次都選取不到第一欄,但是其他欄位都可以 覺得超級奇怪的,一度以為電腦是不是壞掉,還換了一台電腦測試也是一樣的情況 最後突然想到把它print 看看到底在第一欄他是甚麼值,才發現 \ufeff,這個東西 覺得太驚訝了,果然加入\ufeff 這個 丟下去找欄位就找的到,但是\ufeff 這個到底是甚麼?

操作流程

Code

import csv
import shutil

str0 ='0'
str1 ='1'
dir_path='B/'

List_LC1=[]


with open('label_test.csv', newline='',encoding="utf-8") as csvfile:

  rows = csv.DictReader(csvfile)


  for row in rows:

    location = row['LC'].lower().find(str1)

    if location >-1:
      List_LC1.append(row['\ufeff病歷號'])

print(List_LC1)
print(len(List_LC1))


for i in range(len(List_LC1)):
  path_old=dir_path+List_LC1[i]+'/'
  path_new=List_LC1[i]
  shutil.copytree(path_old, path_new)

看看別人怎麼說

  • REF

  • 在Windows下用文本編輯器創建的文本文件,如果選擇以UTF-8等Unicode格式保存,會在文件頭(第一個字符)加入一個BOM標識。具體去除方法看看下面代碼

應該就是這個了!

他看起就是一個在表頭第一個的位置會加入的東西

去除\ufeff

with open(file_path, mode='r', encoding='UTF-8-sig') as f:
s = f.read()

就是這個 可以把那些去除

Demo

留言

  1. 今天我也撞到這個問題,感謝解惑!

    回覆刪除

張貼留言