2014-12-15 18 views
9

Sto provando a separare una sezione di un documento nei suoi diversi componenti che sono separati da e commerciali. Questo è quello che ho:TypeError: split() non accetta argomenti parola chiave

name,function,range,w,h,k,frac,constraint = str.split(str="&", num=8) 

Errore:

TypeError: split() takes no keyword arguments 

Qualcuno può spiegare l'errore a me e anche fornire un metodo alternativo per me fare questo lavoro?

risposta

15

I parametri di str.split sono chiamati sep e maxsplit:

str.split(sep="&", maxsplit=8) 

Ma è possibile utilizzare solo i nomi dei parametri come questo in Python 3.x. In Python 2.x, è necessario fare:

str.split("&", 8) 

che a mio parere è la migliore per entrambe le versioni in quanto utilizzando i nomi è in realtà solo ridondante. str.split è uno strumento molto conosciuto in Python, quindi dubito che qualsiasi programmatore Python avrà difficoltà a capire cosa significano gli argomenti del metodo.

Inoltre, è necessario evitare di rendere i nomi definiti dall'utente uguali a uno dei nomi predefiniti. Fare ciò oscura il built-in e lo rende inutilizzabile nell'ambito corrente. Quindi, sceglierei un nome diverso per la stringa oltre a str.

+0

non solo non c'è motivo per specificare i nomi, in realtà è un errore di farlo (almeno in Python 2.x, non so su 3.x), anche se si usa i nomi che usa il doc, 'sep' e' maxsplit'. Di conseguenza, si noti che l'errore dice "* no * argomenti della parola chiave". – jez

+0

Huh. Funziona in 3.x, quindi ho pensato che avrebbe funzionato anche in 2.x. Aggiornato. – iCodez

+1

È anche particolarmente importante confondere i nuovi utenti sul non utilizzo del nome 'str', perché' str.split' * fa * esiste come metodo non associato. Mi aspetto che l'OP sia stato detto "oh, dovresti usare' str.split() '" che * è * vero, ma può essere preso in modo errato .... – jez

1

L'errore indica che non è possibile fornire argomenti con nome a split. Dovete chiamare split con solo gli argomenti - senza i nomi degli argomenti:

name,function,range,w,h,k,frac,constraint = str.split("&", 8) 
1

spaccatura non ottiene argomenti chiave str o num. Fate questo invece:

name,function,range,w,h,k,frac,constraint = str.split('&', 8) 
Problemi correlati