yydmn 2021-04-09 19:41 采纳率: 50%
浏览 234
已采纳

CSSCI下载的题录txt数据如何转化成Excel?

CSSCI下载的题录数据如下: 

每条文献数据之间有“——”分隔。

 

如何批量的转化成以下格式? 

求赐教 谢谢!

  • 写回答

4条回答 默认 最新

  • CSDN专家-孙老师 2021-04-09 23:29
    关注

    用Python可以实现批量处理,假设有这样一个txt文件。

    【来源篇名】大学图书馆1
    【英文篇名】Discussion on the1
    【来源作者】陈建龙1
    【基金】
    【参考文献】
    1.张国有
    2.李大钊
    --------------------------------------------
    
    【来源篇名】大学图书馆2
    【英文篇名】Discussion on the2
    【来源作者】陈建龙2
    【基金】
    【参考文献】
    1.张国有
    2.李大钊
    3.张国有
    4.李大钊
    --------------------------------------------
    
    【来源篇名】大学图书馆3
    【英文篇名】Discussion on the3
    【来源作者】陈建龙3
    【基金】
    【参考文献】
    1.张国有
    2.李大钊
    3.李大钊
    --------------------------------------------
    
    【来源篇名】大学图书馆4
    【英文篇名】Discussion on the4
    【来源作者】陈建龙4
    【基金】
    【参考文献】
    1.李大钊
    --------------------------------------------

    代码可以这样写:

    #首先将txt文件的最后加上一行跟上面的虚线,代表结束标记
    
    #读取txt文件的内容
    import pandas as pd
    
    data=pd.read_csv('data/题录数据.txt',header=None,names=['data'])
    data.head(10)
    
    #获取名称
    names=[]
    
    for i in range(5):
        names.append(re.findall('(【.*?】).*?',data['data'][i])[0])
    
    print(names)
    
    #获取参考文献及虚线对应的index
    arr1=data[data['data']=='【参考文献】'].index.values
    arr2=data[data['data']=='--------------------------------------------'].index.values
    
    data_df=pd.DataFrame(columns=names)
    
    #获取个字段的值,除了参考文献
    for j in range(len(arr1)-1):
        values=[]
        for i in range(arr2[j]+1,arr1[j+1]+1):
            values.append('/'.join(re.findall('】(.*)',data['data'][i])))
            
        data1=pd.DataFrame(values).T
        data1.columns=names
        data_df=pd.concat([data_df,data1],axis=0)
    
    #获取参考文献,并填入数据框
    for j in range(len(arr1)-1):
        ref=[]
        for i in range(arr1[j]+1,arr2[j]):
            ref.append(data['data'][i])
        #print('|'.join(ref))
        data_df.iloc[j,4]='|'.join(ref)
    
    #保存到Excel文件中
    data_df.to_excel('data/data_df.xlsx',index=None)

    csdn的服务器貌似有点问题,图片发不上来。

    这个代码结合你的文件再修改下,就OK了。

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 C语言设计一个简单的自动换档程序
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。