2015-08-21 2 views
1

Я получаю это:Ошибка при использовании нескольких символов в модуле Python CSV

with open(filename, 'rb') as csvfile: 
    rows = csv.reader(csvfile, delimiter=';;') 

delimiter должен быть 1-символьная строка

можно ли заставить его работать с двумя персонажами?

+0

Ролл самостоятельно, читая, как обычный файл и row.split («;;») –

+0

@CurlyJoe Это легко порвал с действительным формате CSV, как '5 ;;«привет ;; там»', которые должны иметь два элементы как csv, но будут иметь три с вашими. – msw

+0

Да? Это должно быть ошибкой при написании файла csv, поскольку нет допустимого синтаксиса, такого как «hello ;; there». И вообще, разделитель должен быть выбран так, чтобы он не происходил естественным образом, и ошибки, подобные этому, могут быть обработаны. –

ответ

1

Нет, вы не можете сделать это с помощью модуля CSV, вы могли бы сделать обновить файл и заменить ;; с вкладками или какой-либо общий разделитель или вы могли бы использовать pandas.read_csv:

import pandas as pd 

df = pd.read_csv("test.csv",sep=";;") 
print(df.A) 
print(df.B) 
print(df.C) 

test.csv:

A;;B;;C 
1;;2;;3 
4;;5;;6 

Выход:

0 1 
1 4 
Name: A, dtype: int64 
0 2 
1 5 
Name: B, dtype: int64 
0 3 
1 6 
Name: C, dtype: int64 

Для строк:

for _,row in df.iterrows(): 
    print(row.values) 
[1 2 3] 
[4 5 6]