Quiero agregar una pestaña a los datos de tex y exportarlos como archivos csv y txt de excel. Yo tengo:

13 turned in the research Paper 
on Friday; otherwise, he Would 
have not passed the Class

Y quiero agregar pestaña antes de la última palabra. Escribí este código:

df = df.replace({"\s([A-Z][a-z]+[a-z])$": " \\t\\1"}, regex=True)
df.to_csv("file.csv", sep='\t')
df.to_csv("file.txt", sep='\t', index=False)
df.to_excel("file.xlsx", sheet_name='Sheet1')

El problema es cuando exporto y miro los archivos que tengo * "* s que no están en el archivo original y en el archivo de Excel, las líneas enteras permanecen en una columna en lugar de dos columnas.

"13 turned in the research Paper" 
"on Friday; otherwise, he Would" 
"have not passed the Class"

¿Qué me estoy perdiendo?

0
i2_ 25 sep. 2019 a las 14:24

1 respuesta

La mejor respuesta

Tienes que usar r'\\t' o '\\\\t', así es como lo hice.

Código

import pandas as pd
import re

#create the sample dataframe
df = pd.DataFrame({'sent':['13 turned in the research Paper',\
                          'on Friday; otherwise, he Would',\
                          'have not passed the Class']})

#df.head()

#apply regex substitution
df['sent'] = df['sent'].astype(str).apply(lambda x: re.sub(r'\s([A-Z][a-z]+$)', r'\\t\g<1>', x))

df.to_csv('tabbed.txt',index=False)

'''
sent
13 turned in the research\tPaper
"on Friday; otherwise, he\tWould"
have not passed the\tClass
'''

#not-so-pretty output
pd.read_csv('tabbed.txt', sep=r'\\t', engine='python')

'''
                            sent
13 turned in the research   Paper
"on Friday; otherwise, he   Would"
have not passed the         Class
'''

Salida prettificada

#prettify it
(pd.read_csv('tabbed.txt', sep='\\\\t', engine='python')
 .reset_index().rename(columns={'index':'sent0','sent':'sent1'})
 .replace(r'"', '', regex=True)
)

'''
    sent0                       sent1
0   13 turned in the research   Paper
1   on Friday; otherwise, he    Would
2   have not passed the         Class
'''
1
QuantStats 12 oct. 2019 a las 14:03