Buonasera !
Cercando in rete il tuo problema ho trovato diverse informazioni. Provo quindi a elencarti le soluzioni più plausibili al tuo problema.
L'\ufeff è un carattere UNICODE. Trattasi di una sequenza di byte posti all'inizio del file e viene utilizzato per indicare il tipo di codifica file. Il carattere, denominato BOM, viene utilizzato nella codifica UTF-16 e UTF-32, tuttavia non viene usato dalla codifica UTF-8, codifica che non richiede tale BOM. Tuttavia se stai utilizzando un prodotto Microsoft oppure hai iniziato a scrivere il codice su un prodotto come il Notepad ad esempio e hai poi copiato il tuo codice per terminarlo su Spyder è possibile che tale carattere BOM sia rimasto intrappolato nella copia. tale carattere viene comunque implementato all'inizio del file, e questo è un problema dal momento che Python non lo supporta. Probabilmente avevi risolto con la codifica utf-8-sig perché tale codifica include anch'essa un BOM.
Ecco a te alcune possibili soluzioni:
- Potresti riscrivere il codice su Spyder oppure su un editor di testo non proprietario Microsoft evitando così l'intrusione di questo carattere desiderato.
- Sempre cercando in rete ho trovato che molte persone hanno risolto aggiungendo un comando di questo tipo:
word = w.replace('\xef\xbb\xbf', '') .Con questo comando tu vai sostanzialmente a togliere questi caratteri speciali indesiderati, puoi provare ma credo che rielaborare il testo in questo modo rallenterebbe l'esecuzione perché dovrebbe controllare e sostituire ogni occorrenza di tali caratteri.
- Altrimenti se conosci il carattere "incriminato" puoi tranquillamente cancellarne la riga e riscriverla da Spyder.
- Altra soluzione: prova aprendo il file con la funzione load() specificando come codifica utf-8-sig. Questo ti restituirà una stringa in UNICODE senza il BOM. A questo punto puoi ricodificare il tuo file attraverso il comando file.encode("utf-8").
Ricorda che questi caratteri non sono visibili, quindi con tutta probabilità sono stati "trasportati" quando hai copiato la linea da un editor che invece ne faceva uso.
EDIT: Un'altra possibile soluzione sarebbe quella di decodificare il tuo file in utf-8-sig e ricodificarlo in utf-8. Aggiungo la soluzione alla lista.
Spero sinceramente che tu risolva il tuo problema, fammi sapere
.
Leonardo Emili