我目前正在尝试编写脚本,以帮助我从
之类的格式格式化视频脚本的简单txt。1 00:00:00,000-> 00:00:03,550 文字1
2 00:00:03,550-> 00:00:07,030 文字2
到“ text1 text2”。我有100多个单独的文件,我正在尝试将它们全部写入一个文件。
所以我这样写:
import re
import os
path = r'the full path of the directory'
f = open("video_script.txt", 'w')
for filename in os.listdir(path):
text = open(filename).read()
textblock = reduce(lambda x,y: x+y+' ', re.findall('([a-zA-z].*)\r', text))
newtext = textblock.replace('. ', '.\n')
f.write ('*'+filename+'*')
f.write ('\n')
f.write(newtext)
f.write('\n'*2)
f.close()
我成功获得了大约30个文件的代码乐趣,然后出现了以下错误:
TypeError: reduce() of empty sequence with no initial value
我对失败的测试进行了单独的测试,没有错误。 感谢您的帮助。
答案 0 :(得分:1)
您似乎想匹配ASCII字母后的CR和LF以外的其他任何字符。 .
与CR符号匹配,在这种情况下无济于事。您可以使用
re.findall('[a-zA-Z][^\r\n]+', text))
详细信息
[a-zA-Z]
-一个ASCII字母(要匹配任何Unicode字母,请使用[^\W\d_]
)[^\r\n]+
-除CR和LF以外的一个或多个(+
)字符([^...]
是一个与字符集/范围以外的任何字符匹配的否定字符类( s)在字符类中定义)。