markdown
#說明
遇到這個問題真的是只能記錄下來,不然很快又會忘記了....
今天讀取 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
- REF
```
with open(file_path, mode='r', encoding='UTF-8-sig') as f:
s = f.read()
```
就是這個 可以把那些去除
##Demo
今天我也撞到這個問題,感謝解惑!
回覆刪除