几轮后对文件列表的操作失败

时间:2018-07-28 05:04:39

标签: python regex

我目前正在尝试编写脚本,以帮助我从

之类的格式格式化视频脚本的简单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 

我对失败的测试进行了单独的测试,没有错误。 感谢您的帮助。

1 个答案:

答案 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)在字符类中定义)。