MJiWoo_ 2019-03-28 15:12 采纳率: 0%
浏览 2368

【python】用python读取txt并按规则写入excle

图片说明

对于这个问题,我写的代码是这样的

# coding: utf-8
import csv

TITLE = "【来源篇名】"
AUTHOR = "【来源作者】"
ORG = "【第一机构】"
KEYWORD = "【关 键 词】"
REFER = "【参考文献】"
# By WilliamsCarl。2019/3/24 2:21。
# 作者:王木槿天下第一。Copyright.
item_start = True
refer_start = False

headers = [TITLE, AUTHOR, ORG, KEYWORD, REFER]

items = []
with open('E:\\textOut.txt', encoding='gbk') as f:
    row = {
        'refer': []
    }

    for line in f.readlines():
        line = line.strip()
        # if not line:
        #     continue

        if TITLE in line:
            column = 0
            tl = line.split(TITLE)[1]
            refer_start = False
            row['tl'] = tl

        if AUTHOR in line:
            column = 1
            au = line.split(AUTHOR)[1]
            row['au'] = au

        if ORG in line:
            column = 2
            og = line.split(ORG)[1]
            row['og'] = og

        if KEYWORD in line:
            column = 3
            kw = line.split(KEYWORD)[1]
            row['kw'] = kw

        if REFER in line:
            refer_start = True
            continue

        if refer_start:
            row['refer'].append(line)

        if refer_start and (not line):
            refer_start = False

            item = [row['tl'], row['au'], row['og'], row['kw']]
            for r in row['refer']:
                item.append(r)

            items.append(item)
            row = {
                'refer': []
            }



with open('E:\\result.csv','w') as c:
    f_csv = csv.writer(c)
    f_csv.writerow(headers)
    f_csv.writerows(items)


目前的问题是,
比如【来源篇名】某一组不存在,他就会说keyerror,


图片说明

当我将 i= [row['tl'], row['au'], row['og'], row['kw']] 变成row.setdefult,他的过滤又将一些存在的东西过滤掉了,如下图,
图片说明

图片说明

图片说明

  • 写回答

1条回答 默认 最新

  • 溪水人家 2019-03-28 16:53
    关注

    你把你的文本文件放上来,晚上我到家看下。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题