Очистка csv разделителем - PullRequest
       7

Очистка csv разделителем

0 голосов
/ 15 апреля 2019

У меня есть CSV-файл, в котором все столбцы находятся в одной строке, заключены в кавычки и разделены запятыми. Столбцы в одну строку.

Строки в CSV разделяются запятой, если есть 2 запятые, это означает, что отсутствует значение. Я хотел бы разделить эти столбцы по этим параметрам. В тех случаях, когда в строке есть кавычка, запятая в кавычке не должна быть разделителем, потому что это адрес.

Это образец данных (это CSV, я преобразовал его в словарь, чтобы показать вам образец)

{'Store code,"Biz","Add","Labels","TotalSe","DirectSe","DSe","TotalVe","SeVe","MaVe","Totalac","Webact","Dions","Ps"': {0: ',,,,"Numsearching","Numsearchingbusiness","Numcatprod","Numview","Numviewed","Numviewed2","Numaction","Numwebsite","Numreques","Numcall"',
  1: 'Nora,"Ora","Sgo, Mp, 2000",,111,44,33,121,1232,53411,4,5,,3',
  2: 'mc11,"21 old","tjis that place, somewher, Netherlands, 2434",,3245,325,52454,3432,243,4353,343,23,23,18'}}

Я пробовал это до сих пор и немного застрял:

disc = pd.read_csv('/content/gdrive/My Drive/blank/blank.csv',delimiter='",')

Образец CSV: CSV образец

1 Ответ

1 голос
/ 15 апреля 2019

Я использую обычные функции для удаления " в каждой строке на обоих концах, и я конвертирую два "" в один "

Таким образом, я получаю CSV, который могу загрузить с read_csv()

f1 = open('Sample - Sheet1.csv')
f2 = open('temp.csv', 'w')
for row in f1:
    row = row.strip() # remove "\n"
    row = row[1:-1] # remove " on both ends
    row = row.replace('""', '"') # conver "" into "
    f2.write(row + '\n')
f2.close()
f1.close()

df = pd.read_csv('temp.csv')

print(len(df.columns))
print(df)

Другой метод: прочитать его как CSV и сохранить как обычную строку

import csv

f1 = open('Sample - Sheet1.csv')
f2 = open('temp.csv', 'w')

reader = csv.reader(f1)
for row in reader:
    f2.write(row[0] + '\n')

f2.close()
f1.close()


df = pd.read_csv('temp.csv')

print(len(df.columns))
print(df)
...