如何查找文本文件中两个字符串之间的文本并将其写入不同的文本文件??(python中)

如何查找文本文件中两个字符串之间的文本并将其写入不同的文本文件??(python中),python,regex,Python,Regex,例如。。。如果以下是king.txt的内容: asdfbaertybawerdb..... 我想找到a和b之间的文本 我想在one.txt中编写sdf 我想在two.txt等中写入erty 我有以下代码。(使用正则表达式)。。但它给出的输出是sdfertywerd import re f = open('king.txt','r') data = f.read() y = re.findall(r'a(.*?)b',data,re.DOTALL) fb = open('one.txt' ,'w

例如。。。如果以下是king.txt的内容:

asdfbaertybawerdb.....
  • 我想找到a和b之间的文本
  • 我想在one.txt中编写sdf
  • 我想在two.txt等中写入erty
  • 我有以下代码。(使用正则表达式)。。但它给出的输出是sdfertywerd

    import re
    f = open('king.txt','r')
    data = f.read()
    y = re.findall(r'a(.*?)b',data,re.DOTALL)
    fb = open('one.txt' ,'w+' )
    for line in y :
     fb.write(line)
    fb.close()
    

    你的非贪婪正则表达式似乎已经做了正确的事情

    >>> print re.findall(r'a(.*?)b', 'asdfbaertybawerdb', re.DOTALL)
    ['sdf', 'erty', 'werd']
    
    问题是这些结果都被写入同一个文件
    one.txt

    请尝试以下方法:

    s = 'asdfbaertybawerdb'
    results = re.findall(r'a(.*?)b', s, re.DOTALL)
    for n, result in enumerate(results):
        with open('%s.txt' % n+1, 'w') as outfile:
            outfile.write(result + '\n')
    

    这将创建名为1.txt、2.txt、3.txt等的输出文件。如果需要,您可以确定如何将文件名映射到文本名。

    您总是在不使用任何换行符的情况下写入同一文件。此外,将输出文件命名为“1.txt”、“2.txt”,。。。将更容易实施。