Supponiamo di avere una stringa contenente dati da un DB o un foglio di calcolo in formato separato da virgole.Il modo più veloce per estrarre solo determinati campi da una stringa separata da virgola in Python
Ad esempio:
data = "hello,how,are,you,232.3354,good morning"
Si supponga che ci sono forse 200 campi in questi "record".
Sono interessato a osservare solo alcuni campi di questo record. Qual è il modo più veloce in Python per arrivare a loro?
Il modo più semplice sarebbe qualcosa di simile:
fields = data.split(",")
result = [fields[4], fields[12], fields[123]]
Esiste un modo più veloce per fare questo, avvalendosi del fatto che:
- Hai solo bisogno di allocare una lista con 3 elementi e 3 oggetti stringa per il risultato.
- si può fermare la scansione della stringa di dati una volta raggiunto campo 123.
Ho cercato di scrivere del codice utilizzando i ripetuti inviti di trovare per saltare le virgole passati ma se l'ultimo campo è troppo lontano lungo la stringa di questo diventa più lento della soluzione split di base.
Sto elaborando diversi milioni di record, quindi qualsiasi accelerazione sarebbe gradita.
Sarà difficile battere il nativo 'str.split()' con una soluzione Python. –
Non ho idea se sia più veloce o meno, ma puoi evitare di dividere l'intera stringa con 'data.split (", ", 124)'. – chepner
sei sicuro che sia un collo di bottiglia nella tua applicazione? Quanto più veloce è necessario per spostare il collo di bottiglia da qualche altra parte nella tua app? – jfs