遍历文本文件,直到到达某个特定块

时间:2019-10-16 17:20:28

标签: python

我正在使用FPDF将文本转换为PDF。当我写入PDF时,标题看起来与原始文本相去甚远。我想出了解决方案以逐行放置它们。我有以“ Account#”开头,​​以“ -------”结尾的列标题。如何在所有标题保持不变的情况下更改所有标题?

原始文本:https://flic.kr/p/2hw2Zft

PDF:https://flic.kr/p/2hw43hQ

pdf = FPDF("L", "mm", "A4")
pdf.add_page()
pdf.set_font('arial', style='', size=10.0)

with open('C:\\Users\\bxt058y\\PycharmProjects\\MSIT501\\SUMB_Statement_29396- 
76397.txt', 'r') as file:

lines = file.readlines()
for line in lines:
    pdf.multi_cell(h=5.0, align='L', w=0, txt=line, border=0)
pdf.output('drafttest.pdf', 'F')

header1 = lines[0]
header2 = lines[1]
header3 = lines[2]
header4 = lines[3]
header5_1 = " ".join(lines[4].split()[:4])
print(header5_1)
header5_2 = " ".join(lines[4].split()[4:])
print(header5_2)
header6 = lines[5]
header7 = lines[6]
print(header_find)
header8 = lines[7]
header8_1 = " ".join(lines[8].split()[:4])
header8_2 = " ".join(lines[8].split()[4:])
print(header8_2)
header9_1 = " ".join(lines[9].split()[:5])
header9_2 = " ".join(lines[9].split()[5:])



pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header1.strip(), border=0)
pdf.set_x(124)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header2.strip(), border=0)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header3.strip(), border=0)
pdf.set_x(65)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header4, border=0)
pdf.set_x(45)
pdf.cell(ln=0, h=5.0, align='L', w=0, txt=header5_1, border=0)
pdf.set_x(129)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header5_2, border=0)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header6.strip(), border=0)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header7.strip(), border=0)
pdf.cell(ln=0, h=5.0, align='L', w=0, txt=header8_1, border=0)
pdf.set_x(125)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header8_2, border=0)
pdf.cell(ln=0, h=5.0, align='L', w=0, txt=header9_1, border=0)
pdf.set_x(125)
pdf.cell(ln=1, h=5.0, align='L', w=0, txt=header9_2, border=0)

2 个答案:

答案 0 :(得分:1)

也许:

import pandas as pd
data = pd.read_csv('text.txt', header = None)
header = ['Account#', '-----']
header_only = data[data.iloc[:,0].isin(header)]

其中标头包含您要查找的标头行的前几个元素

答案 1 :(得分:1)

查看正则表达式(并注意不同的修饰符,即#include <stdio.h> #include <stdlib.h> #include <memory.h> int main() { int aSize = 3; int **a = (int **)malloc(sizeof(int *)*aSize); for (int i=0; i<aSize; i++) { a[i]=(int *)malloc(sizeof(int)*aSize); memset(a[i], 0, aSize*sizeof(int)); // Set each buffer to all zeros here! } // memset(a[0], 0, aSize*aSize*sizeof(int)); // This will cause undefined behaviour for (int i=0; i<aSize; i++) { for (int j=0; j<aSize; j++) { printf("%d ", a[i][j]); } printf("\n"); } } singlelinemultiline):

verbose

表达式必须在整个字符串/文件内容上完成。 参见a demo on regex101.com