使用python在[ - 和 - ]之间提取文本

时间:2016-09-30 12:58:45

标签: regex python-2.7

我正在编写一个脚本来从文件中提取数据并将数据拆分为多个文件,每个文件的内容由5" @" s

分割

示例:

@@@@@

hello

@@@@@

world

@@@@@

在这种情况下,"你好"应该在一个文件和#34; world"应该在另一个文件中

我正在使用python

2 个答案:

答案 0 :(得分:2)

如果我理解您的要求,您希望能够从带有@@@@@的分隔符的文件中获取输入。

@@@@@
hello
@@@@@
world
@@@@@

这将为

之间的每个块生成一个文件
hello

world

您可以使用re.split来获取分割

splits = re.split("[@]{5}\n", input_buffer)

会给出类似的东西(注意:上面假设分割还包括换行符)

['', 'hello\n', 'world\n', '']

并且仅获取具有实际文本的分割(假设要删除尾随的新行)

[i.strip() for i in splits if i]

输出文件名也未指定如此使用

for index, val in enumerate([i.strip() for i in splits if i]):
    with open("output%d"%index, "w+") as f:

创建名为output0,outputN

的文件
import re
import StringIO

input_text = '''@@@@@
hello
@@@@@
world
@@@@@
'''
string_file =  StringIO.StringIO(input_text)
input_buffer = string_file.read()

splits = re.split("[@]{5}\n", input_buffer)
for index, val in enumerate([i.strip() for i in splits if i]):
    with open("output%d"%index, "w+") as f:
        f.write(val)

只是一个帮手,显然可以使用不同的正则表达式来拆分,将输出名称更改为更合适的等等。

此外,如果正如这个问题的标题所说,在[ - 和 - ]之间使用文本,则可以使用re.findall获取

input_text = '''[-hello-]
[-world-]
'''
string_file =  StringIO.StringIO(input_text)

input_buffer = string_file.read()
splits = re.findall("\[-(.*)-\]", input_buffer)
for index, val in enumerate(splits):
    with open("output%d"%index, "w+") as f:
        f.write(val)

答案 1 :(得分:1)

这可以解决问题:

App2

这将读取我打电话给你的文件' a.txt'并生成名为App1

的文件