I';我完全是个初学者!如何在R或Python中将.txt文件(电影脚本)转换为表(字符和行)?

I';我完全是个初学者!如何在R或Python中将.txt文件(电影脚本)转换为表(字符和行)?,python,r,data-conversion,Python,R,Data Conversion,我是一个完全的初学者,对于一个大学项目,我需要分析电影剧本。我想创建一个表,在其中可以将字符与其行进行匹配。我的文件都是.txt格式,我想把它们转换成csv文件。我有很多脚本要处理,所以我想找到一个可以轻松适应不同文件的代码 这就是我所拥有的: THREEPIO Did you hear that? They've shut down the main reactor. We'll be dest

我是一个完全的初学者,对于一个大学项目,我需要分析电影剧本。我想创建一个表,在其中可以将字符与其行进行匹配。我的文件都是.txt格式,我想把它们转换成csv文件。我有很多脚本要处理,所以我想找到一个可以轻松适应不同文件的代码

这就是我所拥有的:

                            THREEPIO
      Did you hear that?  They've shut 
      down the main reactor.  We'll be 
      destroyed for sure.  This is 
      madness!


                THREEPIO
      We're doomed!


                THREEPIO
      There'll be no escape for the 
      Princess this time.

                THREEPIO
      What's that?
这就是我需要的:

角色“对话”

你听到了吗?他们已经关闭了主反应堆。我们肯定会被摧毁。这太疯狂了

“2”“3P”“我们完了!”

“3”“3P”“公主这次逃不掉了。”

“4”“3P”“那是什么?”

这就是我尝试过的:

#前70行不包含对话
#所以我们可以从第70行开始阅读(例如)
i=70
#while循环提取角色和对话
#(可能有更好的方法来解析文件,而不是
#使用我的疯狂嵌套if-then-elses,但这对我有效)

而(i你可以这样做:

text=”“”
3P
你听到了吗?他们关门了
在主反应堆下面,我们会
肯定被摧毁了,这是
疯狂!
3P
我们注定要失败!
3P
这场战争将无路可逃
这次是公主。
3P
那是什么?
"""
clean=text.split()
n=1
tmp=[]
结果=[]
对于清洁中的元件:
if元素.isupper():
如果tmp:
结果追加(tmp)
tmp=[n,元素]
n+=1
持续
尝试:
tmp[2]=“”.join((tmp[2],元素))
除索引器外:
tmp.append(元素)
打印(结果)
结果:

[[1,'THREEPIO',“你听到了吗?他们已经关闭了主反应堆。我们肯定会被摧毁。这太疯狂了!”],[2,'THREEPIO',“我们注定要失败!”,[3,'THREEPIO',“公主这次将无法逃脱。”]]

如果您知道字符名列表(并且不担心拼写错误),类似这样的方法会奏效:

script=”“”
3P
你听到了吗?他们关门了
在主反应堆下面,我们会
肯定被摧毁了,这是
疯狂!
3P
我们注定要失败!
3P
这场战争将无路可逃
这次是公主。
3P
那是什么?
"""
字符=['THREEPIO','ANAKIN']
行=[x代表列表中的x(如果x为,则映射(str.strip,script.split('\n'))]
结果=[]
对于枚举(行)中的(i,项):
如果项目以字符表示:
对话=[]
对于范围内的索引(i+1,len(行)):
如果行[索引]为字符:
打破
追加(行[索引])
结果.追加([项目,'.join(对话)])
打印([x代表枚举中的x(结果,开始=1)])
这张照片是:

[(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?"])]

到目前为止你尝试了什么?我刚刚用我尝试过的内容编辑了这篇文章,希望它更有意义now@randomfigure好主意,我让你找到why@FlorianBernard非常感谢你的帮助!我会尝试一下!非常感谢你的帮助,但是我有很多脚本要看,我没有所有脚本的字符名。但是谢谢你不管怎么说,我非常喜欢!