2017-02-22 24 views
1

У меня есть набор данных ASCII, который имеет ctrl. Обозначение поля и \ n в качестве разделителя строк. Я ищу, чтобы прочитать это в Python, и мне интересно, как с этим бороться. В частности, я хотел бы иметь возможность читать эту информацию в кадре данных pandas.Чтение ASCII с разделителем поля в виде ctrl A и ограничение строки как n на python

У меня есть;

import pandas as pd 
input = pd.read_csv('000000_0', sep='^A') 

Ошибка я тогда получаю

_main__:1: ParserWarning: Falling back to the 'python' engine because the 'c' engine does 
not support regex separators; you can avoid this warning by specifying engine='python'. 

я тогда не знаю, как я указать разделитель строки тоже.

Любые идеи?

Заранее благодарен!

+0

ли вы какие-либо проблемы с использованием обычных методов? – Goyo

ответ

3

Использование pd.read_csv с параметром sep=chr(1)

from io import StringIO 
import pandas as pd 

mycsv = """a{0}b{0}c 
d{0}e{0}f""".format(chr(1)) 


pd.read_csv(StringIO(mycsv), sep=chr(1)) 

    a b c 
0 d e f 
0

csv библиотека Python является довольно хорошо чтение файлов с разделителями ;-)

Принимая пример из документации, ссылки выше:

import csv 
with open('eggs.csv', 'rb') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
    for row in spamreader: 
     print ', '.join(row) 

Это будет автоматически перебирать строки в файле (таким образом, обрабатывать символы новой строки), и вы можете установить разделитель, как показано.

+0

Проблема заключается в том, как OP может правильно написать конкретный разделитель в своем файле ('' \ x01'', обычно вводимый как ctrl + a), который ваш ответ не адресует. Чтобы этот пример с 'csv' был полезен для этого вопроса, пожалуйста, покажите пример с этим разделителем. – Nathan

0

Если по CTRL+A вы имеете в виду ASCII-код для SOH (начала колошения), разделите данные о новых строках первым, чтобы получить строки, и разделить их на "\x01", который является шестнадцатеричным кодом для SOH. Но без какого-либо кода, данных, ожидаемого результата или сообщения об ошибке это в основном угадывает.