我正在编写一个脚本来从文件中提取数据并将数据拆分为多个文件,每个文件的内容由5" @" s
分割示例:
@@@@@
hello
@@@@@
world
@@@@@
在这种情况下,"你好"应该在一个文件和#34; world"应该在另一个文件中
我正在使用python
答案 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