我想将.txt文件转换为.csv文件。 .txt文件由单词列表及其POS标签组成,其形式为: Sophie_NNP收听_VBZ到_TO her_PRP $同学_NNS as_IN他们_PRP告诉_VBP her_PRP(依此类推)。
使用此代码,我将其转换为一个csv文件,以便每个单词及其标签都在各自的行上:
import re
import pandas as pd
infile = 'POS_Test.txt'
Text_File = open(infile, 'r')
Table = 'POS_Text.csv'
output_file = open(Table, 'w')
for line in Text_File.readlines():
text_list = re.split('[ ]', line)
sentences = pd.DataFrame(text_list)
print(sentences, file=output_file)
output_file.close()
这很好用,唯一的问题是,当我在Notepad ++或Excel中打开.csv文件时,似乎跳过了第30行到540行(总共571行),并用一行中的点替换了它们。
Screenshot of the area where the lines are missing
我可以在代码中添加一些东西来防止这种情况发生,以便看到每一行吗?理想情况是在Excel中,因为这是继续进行工作的地方。
根据Jan的要求: 这是完整的.txt文件:
B_IN The_DT dare_NN Sophie_NNP收听_VBZ到_TO her_PRP $同学_NNS as_IN他们_PRP tell_VBP her_PRP about_IN the_DT dare_NN ._。她_PRP是_VBZ紧张_JJ ._。 She_PRP did_VBZ not_RB want_VB to_TO do_VB the_DT dare_NN ._。但是_CC every_DT new_JJ瞳孔_NN has_VBZ to_TO do_VB it_PRP ._。 Every_DT day_NN on_IN her_PRP $ way_NN to_TO school_NN,_,Sophie_NNP通过_VBZ the_DT old_JJ house_NN ._。 It_PRP外观_VBZ令人恐惧_VBG和_CC每个人_NN说_VBZ it_PRP is_VBZ困扰了_VBN ._。 No_DT one_NN is_VBZ sure_JJ if_IN people_NNS live_VBP there_RB or_CC not_RB ._。 People_NNS are_VBP太_RB害怕_JJ到_TO查找_VB out_RP ._。大多数_JJS学生_JJ never_RB敲打_VBP on_IN the_DT door_NN ._。 Only_RB brave_JJ children_NNS finish_VBP the_DT dare_NN and_CC kick_NN ._。 again_RB:_:One_CD下午_NN a_DT young_JJ boy_NN is_VBZ无聊_VBN ._。 He_PRP想要_VBZ到_TO go_VB到_DT the_DT old_JJ house_NN ._。 His_PRP $父母_NNS告诉_VBP他_PRP非_RB至_TO go_VB ._。他们_PRP告诉_VBP他_PRP它_PRP的_VBZ危险_JJ ._。但是,_CC the_DT young_JJ boy_NN did_VBZ n_t_RB listen_VB ._。 when_WRB he_PRP获取_VBZ到_TO the_DT house_NN he_PRP敲打_VBZ on_IN the_DT door_NN和_CC waits_NNS ._。 Nothing_NN ._。 He_PRP再次敲打_VBZ_RB ._。最后,_RB,_,_ DT门_NN打开_VBZ ._。但是,_CC there_EX is_VBZ没人_NN there_RB ._。 The_DT boy_NN walks_NNS inside_IN ._。 _DT门_NN快速关闭_VBZ_RB落后_IN他_PRP ._。 The_DT house_NN is_VBZ深色_JJ和_CC it_PRP气味_VBZ令人反感的_VBG ._。 The_DT boy_NN听到_VBZ a_DT noise_NN ._。 A_DT scratch_NN ._。 He_PRP步行_VBZ沿_IN the_DT走廊_NN ._。 The_DT noise_NN得到_VBZ更大_JJR ._。 where_WRB is_VBZ it_PRP来自_IN?_VBG。突然_RB,_,他_PRP跳闸_VBZ ._。 His_PRP $ head_NN hits_VBZ the_DT wooden_JJ floor_NN with_IN a_DT B_NNP A_NNP N_NNP G_NNP!_。 The_DT boy_NN位于_IN上的_VBZ the_DT floor_NN,_,震惊_VBD ._。 He_PRP再次听到_VBZ the_DT噪声_NN_RB ._。 Scratch_NNP,_,scratch_NN,_,S_NNP C_NNP R_NNP A_NNP T_NNP C_NNP H_NNP,_,S_NNP C_NNP R_NNP A_NNP T_NNP C_NNP H. The_DT boy_NN也是_VBZ_RB scared_VBN到_TO move_VB ._。 He_PRP想要_VBZ the_DT scratching_NN到_TO stop_VB ._。最终,_RB,_,it_PRP不会_VBZ _。 The_DT boy_NN慢慢地_RB站立_VBZ上_RP和_CC外观_VBZ在_RB ._。 And_CC there_RB,_,in_IN front_NN of_IN他_PRP,_,is_VBZ a_DT dark_JJ Figure_NN in_IN a_DT hood_NN ._。 The_DT图形_NN stares_VBZ at_IN他_PRP ._。 It_PRP说_VBZ没什么_NN ._ Terrified_NNP,_,the_DT boy_NN运行_VBZ到_TO the_DT door_NN ._。 It_PRP的_VBZ已锁定_VBN ._。 He_PRP is_VBZ trapped_VBN ._。 A_DT cold_JJ,_,white_JJ hand_NN抓斗_VBD him_PRP ._ The_DT boy_JJ尖叫_NN ._ Nobody_NN ever_RB sees_VBZ the_DT boy_NN again_RB ._。 People_NNS说_VBP that_IN有时_RB you_PRP can_MD still_RB听到_VB his_PRP $尖叫声_NN ._。 Some_DT people_NNS say_VBP he_PRP is_VBZ dead_JJ ._。 Others_NNS are_VBP not_RB so_RB sure_JJ ._。 Sophie_NNP认为_VBZ关于_IN the_DT故事_NN as_IN she_PRP慢慢走VBZ_RB沿着_IN the_DT icy_NN path_NN ._。 She_PRP到达_VBZ the_DT花园_NN wall_NN ._。 。她_PRP步行_VBD进入_在DT花园_NN ._。 She_PRP颤抖_VBD when_WRB she_PRP看到_VBZ坟墓_NNS by_IN the_DT path_NN ._。 She_PRP尝试_VBZ否_RB至_TO look_VB at_IN他们_PRP as_IN she_PRP walks_VBZ向上_IN至_TO the_DT house_NN ._。 For_IN a_DT second_JJ Sophie_NNP thinks_VBZ she_PRP sees_VBZ a_DT dark_JJ Figure_NN at_IN the_DT window_NN ._。她_PRP缓慢行走_VBZ_RB到_DT门_NN ._。她_PRP敲_VBZ和_CC等待_NNS ._。但是_CC Sophie_NNP要_VBZ到_TO be_VB真的_RB勇敢_JJ,_,所以_IN she_PRP再次敲打_VBZ_RB ._。她_PRP等待_VBZ ._。在_IN a_DT while_NN,_之后,_DT门_NN打开_VBZ ._。 A_DT little_JJ old_JJ lady_NN looks_VBZ at_IN her_PRP ._。 away_RB ._。 I_PRP wonder_VBP why_WRB ._反正RB ._。 you_PRP are_VBP the_DT then_RB she_PRP要求_VBZ Sophie_NNP到_TO come_VB in_IN ._。 T_NNP H_NNP U_NNP M_NNP P_NNP,_,beats_VBZ更快_RBR ._。 She_PRP外观_VBZ在_IN her_PRP之后,_,然后_RB walks_VBZ内部在_RB ._。 (“'”,“''”)
预期的解决方案将只是上面的屏幕截图中的内容,但是实际上,您应该看到带有POS标签的每个单词-而不是省略号-全部571行。这是我目前获得的完整Excel表: Excel result with ellipsis (Would like for the ... to be replaced through the actual words and POS tags)
答案 0 :(得分:1)
您需要为此使用熊猫吗?似乎您可以将整个文本文件读取为一个变量,然后在空格处分割。
import csv
with open('POS_Test.txt', 'r') as Text_File:
split_values = Text_File.read().split(" ")
with open('POS_Text.csv', 'w') as output_file:
wr = csv.writer(output_file)
wr.writerow(split_values)
编辑-一些更多细节:
首先,您要使用'with'打开文件。这样可以确保在处理完文件后将其关闭。
接下来,您有了文件的内容(大概是文本),您可以简单地对字符串执行.split(“”)方法,该方法将在空格处分割并为您提供包含许多字符串的列表。
然后,我们再次使用'with'打开输出的csv文件,并使用csv模块writerows将文件写出。
写行: 将所有元素写在行中(如所描述的那样迭代行对象 上方)到作者的文件对象,其格式根据当前 方言。
答案 1 :(得分:0)
您所看到的是屏幕上显示的数据框句子的中间部分。
import pandas as pd
import re
infile = 'POS_Test.txt'
Text_File = open(infile, 'r')
for line in Text_File.readlines():
text_list = re.split('[ ]', line)
sentences = pd.DataFrame(text_list)
sentences.to_csv('POS_Text.csv')
答案 2 :(得分:0)
您可以将列表提供给pandas DataFrame
with open('temp.txt') as f:
list = f.read().split()
df = pd.DataFrame(list)
df.to_csv('temp.csv')
希望这会有所帮助!