CSSCI下载的题录数据如下:
每条文献数据之间有“——”分隔。
如何批量的转化成以下格式?
求赐教 谢谢!
用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了。
是用Excel来操作吗?Excel可以实现,Python也可以。参考文献怎么排列,多行还是多列?
把txt中内容复制到Excel中,目前处于一列。
第一步:将】符号全部替换成】、(Excel中的查找替换),后面这个顿号表示分列的标志。
第二步:选中这一列,菜单:数据-分列-分隔符号-其他:输入、,下一步,完成,即可完成分列。
到此为止,将这一列分成了两列,第一列是【xxx】,第二列是对应的内容。
第三步:选中这两列内容(除了参考文献下方的内容),复制,在新的表格中,转置粘贴成行。
第四步:将参考文献内容复制粘贴到【参考文献】的下方。
大概就是这样操作。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632