将打印输出保存为字典或 JSON
Saving print output as dict or JSON
我有以下使用 AWS 的 boto3 的代码。
import boto3
from trp import Document
# Document
s3BucketName = "bucket"
documentName = "doc.png"
# Amazon Textract client
textract = boto3.client('textract')
# Call Amazon Textract
response = textract.analyze_document(
Document={
'S3Object': {
'Bucket': s3BucketName,
'Name': documentName
}
},
FeatureTypes=["FORMS"])
#print(response)
doc = Document(response)
for page in doc.pages:
# Print fields
print("Fields:")
for field in page.form.fields:
print("Key: {}, Value: {}".format(field.key, field.value))
我正在尝试将该函数的输出保存为字典、JSON 或 CSV,但我还不是经验丰富的 python 程序员。
我试过这个:
key_map = {}
filepath = 'output.txt'
with open(filepath) as fp:
line = fp.readline()
cnt = 1
while line:
for page in doc.pages:
# Print fields
print("Fields:")
for field in page.form.fields:
#print("Key: {}, Value: {}".format(field.key, field.value))
key_map[str(field.key, field.value)] = cnt
line = fp.readline()
cnt +=1
但我不认为这个解决方案有效。关于如何将 for 循环的输出保存为 JSON?
的任何提示
如果你想作为 csv 输出,你可以使用 csv 模块 as:
import csv
doc = Document(response)
with open('aws_doc.csv', mode='w') as aws_field_file:
field_write = csv.writer(aws_field_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for page in doc.pages:
for field in page.form.fields:
# This will write it as your <key>, <value>
field_write.writerow([field.key, field.value])
如果你想在文件中使用 headers 你也可以使用 DictWriter
这样你就可以很容易地传递一个字典:
https://docs.python.org/3.4/library/csv.html#csv.DictWriter
我有以下使用 AWS 的 boto3 的代码。
import boto3
from trp import Document
# Document
s3BucketName = "bucket"
documentName = "doc.png"
# Amazon Textract client
textract = boto3.client('textract')
# Call Amazon Textract
response = textract.analyze_document(
Document={
'S3Object': {
'Bucket': s3BucketName,
'Name': documentName
}
},
FeatureTypes=["FORMS"])
#print(response)
doc = Document(response)
for page in doc.pages:
# Print fields
print("Fields:")
for field in page.form.fields:
print("Key: {}, Value: {}".format(field.key, field.value))
我正在尝试将该函数的输出保存为字典、JSON 或 CSV,但我还不是经验丰富的 python 程序员。
我试过这个:
key_map = {}
filepath = 'output.txt'
with open(filepath) as fp:
line = fp.readline()
cnt = 1
while line:
for page in doc.pages:
# Print fields
print("Fields:")
for field in page.form.fields:
#print("Key: {}, Value: {}".format(field.key, field.value))
key_map[str(field.key, field.value)] = cnt
line = fp.readline()
cnt +=1
但我不认为这个解决方案有效。关于如何将 for 循环的输出保存为 JSON?
的任何提示如果你想作为 csv 输出,你可以使用 csv 模块 as:
import csv
doc = Document(response)
with open('aws_doc.csv', mode='w') as aws_field_file:
field_write = csv.writer(aws_field_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for page in doc.pages:
for field in page.form.fields:
# This will write it as your <key>, <value>
field_write.writerow([field.key, field.value])
如果你想在文件中使用 headers 你也可以使用 DictWriter
这样你就可以很容易地传递一个字典:
https://docs.python.org/3.4/library/csv.html#csv.DictWriter