``type(row)`` sollte Dir verraten, dass es sich um ein Tupel handelt. Das hat dann nichts mehr speziell mit dem `csv`-Modul zu tun, Tupel ist einer der eingebauten Grunddatentypen. Zugriff auf einzelne Elemente und Bereiche funktioniert wie bei Listen über Index oder "Slices".
Code: Alles auswählen
In [73]: row = ('a', 'b', 'c')
In [74]: row[0]
Out[74]: 'a'
In [75]: row[-1]
Out[75]: 'c'
In [76]: row[1:]
Out[76]: ('b', 'c')
Was Du auch immer machen kannst, ist ein ``print dir(obj)`` und in der Python-Shell ``help(obj)`` um mehr über ein bestimmtes konkretes Objekt zu erfahren.
Code: Alles auswählen
In [77]: dir(row)
Out[77]:
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__doc__',
'__eq__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getnewargs__',
'__getslice__',
'__gt__',
'__hash__',
'__init__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rmul__',
'__setattr__',
'__str__']
So ein Tupel hat also nur "magische" Methoden.
Code: Alles auswählen
In [78]: help(row)
Help on tuple object:
class tuple(object)
| tuple() -> an empty tuple
| tuple(sequence) -> tuple initialized from sequence's items
|
| If the argument is a tuple, the return value is the same object.
|
| Methods defined here:
|
| __add__(...)
| x.__add__(y) <==> x+y
|
| __contains__(...)
| x.__contains__(y) <==> y in x
|
| __eq__(...)
| x.__eq__(y) <==> x==y
|
| __ge__(...)
| x.__ge__(y) <==> x>=y
...