8 Stimmen

Bestimmung des Typs eines Wertes, der in Python als String dargestellt wird

Wenn ich eine kommaseparierte Datei oder Zeichenkette mit dem CSV-Parser in Python lese, werden alle Elemente als Zeichenkette dargestellt, siehe Beispiel unten.

import csv
a = "1,2,3,4,5"
r = csv.reader([a])
for row in r:
    d = row

d
['1', '2', '3', '4', '5']
type(d[0])
<type 'str'>

Ich möchte für jeden Wert feststellen, ob es sich um einen String, Float, Integer oder ein Datum handelt. Wie kann ich dies in Python tun?

0voto

AJ. Punkte 26360

Desde el Handbuch :

Rückgabe eines Leserobjekts, das über die Zeilen der angegebenen csvfile durchläuft. csvfile kann jedes Objekt sein sein, das das Iterator-Protokoll unterstützt unterstützt und jedes Mal einen String zurückgibt, wenn seine next()-Methode eine Zeichenkette zurückgibt - Dateiobjekte und Listenobjekte sind beide geeignet.

Die Schnittstelle erfordert, dass bei jedem Aufruf von next() eine Zeichenkette zurückgegeben wird.

0voto

telliott99 Punkte 7254

Das Datum ist ein bisschen schwieriger. Es hängt vom Format ab und davon, wie regelmäßig es ist. Hier ist ein Hinweis, der Ihnen den Rest erklärt.

>>> int('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a'
>>> int('1')
1
>>> float('1')
1.0
>>> float('1.0')
1.0

Aber Achtung!

>>> int(1.0)
1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X