Другие авторы упоминали, что вы можете просто использовать escape-код \t
в качестве разделителя в csv.reader()
для анализа дополнительных строк.Это правда, но из вашего файла видно, что ваш разделитель - это фактически четыре пробела вместо одной вкладки.Таким образом, это не сработает.
Если вы распечатаете [row for row in reader]
, вы обнаружите, что разделение между соседними элементами не сохраняется:
[['0 61'],
['0 33344'],
['0 33412'],
['0 36114'],
['0 37320'],
['0 37769'],
['0 37924']]
Поэтому были предприняты усилия, чтобы изменить это.в кортеж не удастся, так как в строке есть только один элемент str
.Итак, каждый row
в reader
является отдельным элементом list
.Вызов row[0]
даст вам фактическое строковое значение: '0 61'
.
Затем мы используем .split()
для создания двух элементов из этой строки:
In [47]: '0 61'.split()
Out[47]: ['0', '61']
Теперь мы можем использовать map
для создания целых чисел из этих двух новых строк:
In [49]: map(int,'0 61'.split())
Out[49]: [0, 61]
Затем мы преобразуем в кортеж и добавляем в список, как вы сделали выше, и у нас есть рабочаярешение.
data = open("path_to_file.txt", 'r')
reader = csv.reader(data)
allRows = [tuple(map(int,row[0].split())) for row in reader]
In [43]: allRows
Out[43]:
[(0, 61),
(0, 33344),
(0, 33412),
(0, 36114),
(0, 37320),
(0, 37769),
(0, 37924)]