2015-08-19 3 views
1

Возможно ли для pandas читать текстовый файл, содержащий продолжение строки?Python Pandas read_table с продолжением строки

Например, у меня есть текстовый файл, 'read_table.txt', который выглядит следующим образом:

col1, col2 
a, a string 
b, a very long \ 
    string 
c, another string 

Если я вызываю read_table на файл я получаю это:

>>> pandas.read_table('read_table.txt', delimiter=',') 
     col1    col2 
0   a   a string 
1   b a very long \ 
2  string    NaN 
3   c another string 

Я хотел бы получить это:

 col1     col2 
0   a    a string 
1   b a very long string 
2   c  another string 

ответ

1

Использование escapechar:

df = pd.read_table('in.txt', delimiter=',',escapechar="\\") 

Это будет включать в себя символ новой строки в DSM отметили, вы можете удалить с новой строки df.col2 = df.col2.str.replace("\n\s*","")

+1

Обратите внимание, что вам нужно будет добавить пропуск очистки, что-то вроде '.str.replace (" \ n \ s * "," ")' (не проверено), чтобы исправить значения col2 после факта. – DSM

+1

Спасибо за ответы. Я не знаю, почему я этого раньше не видел! – mrclary

1

Я не мог получить возможность escapechar работать как предложено Padraic, вероятно, потому, что я застрял на Windows, поле в данный момент (сигнальное устройство \r):

 col1    col2 
0   a   a string 
1   b a very long \r 
2  string    NaN 
3   c another string 

Что я получить, чтобы работать правильно было регулярное выражение проход:

import pandas as pd 
import re 
import StringIO # python 2 on this machine, embarrassingly 

with open('read_table.txt') as f_in: 
    file_string = f_in.read() 

subbed_str = re.sub('\\\\\n\s*', '', file_string) 

df = pd.read_table(StringIO.StringIO(subbed_str), delimiter=',') 

Это дало желаемый результат:

col1     col2 
0 a    a string 
1 b a very long string 
2 c  another string 

Очень круто вопрос. Спасибо, что поделились ею!

Смежные вопросы