尝试在起点和终点之间复制/粘贴文本,转置和交换数据点

时间:2018-10-21 02:34:03

标签: python python-3.x text copy-paste

我有一些代码可以将大文件复制/粘贴到需要的已解析文件中。这是一个工作脚本。

with open('C:\\Users\\Excel\\Desktop\\test_in.txt') as infile, open('C:\\Users\\Excel\\Desktop\\test_out.txt', 'w') as outfile:
    copy = False
    for line in infile:
        if line.strip() == "Start":
            copy = True
        elif line.strip() == "End":
            copy = False
        elif copy:
            outfile.write(line)

现在,我试图弄清楚如何转置每个测试块,并多次交换相邻的数据点。也许这需要一个dta框架,我不确定。

这是一张之前的图片。

enter image description here

这是一张残像。

enter image description here

这是我的示例文字。

file name
file type
file size
Start
        - data_type: STRING
          name: Operation
        - data_type: STRING
          name: SNL_Institution_Key
        - data_type: INTEGER
          name: SNL_Funding_Key
End
        - data_type: STRING
          name: Operation
        - data_type: STRING
          name: SNL_Institution_Key
        - data_type: INTEGER
          name: SNL_Funding_Key
Start
        - data_type: STRING
          name: SEDOL_NULL
        - data_type: STRING
          name: Ticker
        - data_type: DATETIME
          name: Date_of_Closing_Price
End 

在我看来,这在Python中很难做到。如果很难做到所有这些,请告诉我。 Python可能不是正确的工具。我对Python不够了解,无法确定这是否是正确的方法。感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

按冒号分割行,然后以不同顺序合并它们。 我添加了一些标志来实现与文件中完全相同的标点符号, 但是对于中等大小的数据,我通常使用带有多个正则表达式或字符串替换的迭代

with open('C:\\Users\\Excel\\Desktop\\test_in.txt') as infile, 
    file_start = True
    line = line.strip()
    next(infile)
    next(infile)
    next(infile)
    for line in infile:
        if line.strip() == "Start":
            if file_start:
                file_start = False # write nothing first time
            else:
               outfile.write('\n')
            line_start = True  # starting new line in the output file
        elif not line.strip() == "End":
            if not line_start:  
                outfile.write(", ")

            linestart = False

            line = line.strip(" -")
            s = line.split(": ")
            outfile.write(": ".join(s[::-1]))