要使用的库:
- 对于 docx 到 text 的转换使用
docx2text
- 对于json转换使用
json库
- 要在字典中存储值,请使用
defaultdict() from collections
步骤
- 使用
docx2text将文档转换为字符串
- 将字符串转换为字符串列表,用新行
\ncharacter 分割并删除垃圾空格''
- 对于列表中的每个元素,由
: , 拆分以进行操作。
通过:2删除数字拼接
- 将列表
li中的每个项目的每个键、值对存储在字典中
- 将dict对象添加到
json_li
- 调用
json.dumps(json_li)创建json字符串
代码
import docx2txt, json, collections
# step 1 get docx text
text = docx2txt.process("F:\workspace\StackOverFlow\guac.docx")
# convert to list
li = [x for x in text.split('\n')]
# remove ''s i.e Nones
li = list(filter(None, li))
print(li)
# json list
json_li = []
# convert and store all values
for x in li:
x = x[2:] # remove 1. 2. 3. ...
y = x.split(',')
print(y)
d = collections.defaultdict()
for m in y:
z = m.split(':')
z1 = [x.strip() for x in z]
d[z1[0]] = z1[1]
json_li.append(d)
# JSON conversion
print(json.dumps(json_li, indent=4))
输出
['1.Name: ABC, Place: Maryland, Country: US, PHONE NO.:1234567890', '2.Name: ABC, Place: Maryland, Country: US, PHONE NO.:1234567890', '3.Name: ABC, Place: Maryland, Country: US, PHONE NO.:1234567890']
['Name: ABC', ' Place: Maryland', ' Country: US', ' PHONE NO.:1234567890']
['Name: ABC', ' Place: Maryland', ' Country: US', ' PHONE NO.:1234567890']
['Name: ABC', ' Place: Maryland', ' Country: US', ' PHONE NO.:1234567890']
[
{
"Name": "ABC",
"Place": "Maryland",
"Country": "US",
"PHONE NO.": "1234567890"
},
{
"Name": "ABC",
"Place": "Maryland",
"Country": "US",
"PHONE NO.": "1234567890"
},
{
"Name": "ABC",
"Place": "Maryland",
"Country": "US",
"PHONE NO.": "1234567890"
}
]
更新文档文件
如果您有 doc 文件,请使用
import textract
text = textract.process("path_to_file")