разделение файла .txt на два столбца с помощью панд - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть текстовый файл скрипта, и он упорядочен следующим образом:

0 "character one" "dialogue for character one."
1 "character two" "dialogue for character two." 
2 "character one" "dialogue for character one again"
...
etc

Моя проблема заключается в том, что я хочу проанализировать этот текст, и мне нужно, чтобы он был в формате .csv, где символ находится впервый столбец, и все диалоги находятся во втором столбце.

Я прочитал .txt файл в панд так:

txt_ep_4 = pd.read_table('/Users/nathancahn/star_wars/0_data/ep_IV_script.txt'), так что теперь у меня есть ряд данных панд (не фрейм данных) для взаимодействия.

В основном я пробовал разные методы разделения текста на столбцы с помощью Series.str.split (), но безуспешно.Я использовал series_txt_ep_4.str.split(pat=" ") для обозначения разделения на пробел, но вместо этого он разделял на каждый пробел.

Опять же, мой идеальный вывод - первый столбец будет именем персонажа, а второй столбец - строкой диалога.связан с этим персонажем.

1 Ответ

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

Полагаю, вам нужно read_csv с параметрами sep и names для имен новых столбцов, поскольку в pandas 0.24.2 get:

FutureWarning: read_table устарела, вместо этого используйте read_csv.

temp=u'''"character one" "dialogue for character one."
"character two" "dialogue for character two." 
"character one" "dialogue for character one again"'''
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="\s+", names=['a','b'])
#alternative
#df = pd.read_csv(pd.compat.StringIO(temp), delim_whitespace=True, names=['a','b'])
print (df)
               a                                 b
0  character one       dialogue for character one.
1  character two       dialogue for character two.
2  character one  dialogue for character one again

EDIT:

Если значения имеют также заголовок:

temp=u""""character" "dialogue"
"1" "THREEPIO" "Did you hear that?  They've shut down the main reactor.  We'll be destroyed for sure.  This is madness!"
"2" "THREEPIO" "We're doomed!"
"3" "THREEPIO" "There'll be no escape for the Princess this time."
"4" "THREEPIO" "What's that?"
"5" "THREEPIO" "I should have known better than to trust the logic of a half-sized thermocapsulary dehousing assister..."
"6" "LUKE" "Hurry up!  Come with me!  What are you waiting for?!  Get in gear!"
"7" "THREEPIO" "Artoo! Artoo-Detoo, where are you?"
"8" "THREEPIO" "At last!  Where have you been?"
"9" "THREEPIO" "They're heading in this direction. What are we going to do?  We'll be sent to the spice mines of Kessel or smashed into who knows what!"
"10" "THREEPIO" "Wait a minute, where are you going?"
"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="\s+")

print (df)

   character                                           dialogue
1   THREEPIO  Did you hear that?  They've shut down the main...
2   THREEPIO                                      We're doomed!
3   THREEPIO  There'll be no escape for the Princess this time.
4   THREEPIO                                       What's that?
5   THREEPIO  I should have known better than to trust the l...
6       LUKE  Hurry up!  Come with me!  What are you waiting...
7   THREEPIO                 Artoo! Artoo-Detoo, where are you?
8   THREEPIO                     At last!  Where have you been?
9   THREEPIO  They're heading in this direction. What are we...
10  THREEPIO                Wait a minute, where are you going?
...