我正在尝试将多个可填写pdf表单中输入的数据转换为一个CSV文件。
这段代码包含以下几个步骤:
- 打开新的.CSV文件(标题行)
- 使用“ for...in”循环打开多个pdf表单
- 将填写在表单字段中的数据转换为CSV
但是,在运行命令时我收到了错误信息:
fc-int01-generateAppearances: None
Traceback (most recent call last):
File "C:\Python27\Scripts\test3.py", line 31, in <module>
writer.writerow(value)
_csv.Error: sequence expected
如果我只是在Python中打印值(表单数据),那么它可以工作。但导入数据不行。可能还存在从行到列转换值的问题。希望我说得清楚。
这是我的代码:
import glob
import os
import sys
import csv
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdftypes import resolve1
#input file path for specific file
#filename = "C:\Python27\Scripts\MH_1.pdf"
#fp = open(filename, 'rb')
#open new csv file
out_file=open('C:\Users\Wonen\Downloads\Test\output.csv', 'w+')
writer = csv.writer(out_file)
#header row
writer.writerow(('Name coordinator', 'Date', 'Address', 'District',
'City', 'Complaintnr'))
#enter folder path to open multiple files
path = 'C:\Users\Wonen\Downloads\Test'
for filename in glob.glob(os.path.join(path, '*.pdf')):
fp = open(filename, 'rb')
#read pdf's
parser = PDFParser(fp)
doc = PDFDocument(parser)
#doc.initialize() # <<if password is required
fields = resolve1(doc.catalog['AcroForm'])['Fields']
for i in fields:
field = resolve1(i)
name, value = field.get('T'), field.get('V')
print '{0}: {1}'.format(name, value)
writer.writerow(value)
使用print(repr(value))
输出文本pdf(包括所有输出)的结果:
None
'Crip Gang'
None
None
None
/Ja
None
/1
/1
None
None
/Ja
/Ja
None
None
None
'wfwf'
'sd'
'dfwf'
'ffasf'
'tsdbd'
'dfadfasdf'
None
'df'
None
'asdff'
None
'wff'
None
'ffs'
None
None
None
None
None
None
None
None
None
None
None
'1'
'2'
'7'
/0
'Ja'
'Two unlimited'
'Captain Jack'
None
'www.kijkbijmij.nl'
'Onderverhuur'
/Ja
等等。 "None" 代表“空文本框”; 而“1”和“0”则代表“是”和“否”的输出。
print
函数的输出是什么? - adrianuswriter.writerow([value])
。 - martineauwriterow()
会在传递给它作为参数的序列中的每个元素之间放置一个逗号。当您使用[value]
时,该序列仅包含一个元素,即value
中的所有内容。请展示一下value
中的数据长什么样子。如果每个字段的数据都不同,那么我们也需要知道这一点。 - martineau