CSSCI下载的题录数据如下:
每条文献数据之间有“——”分隔。
如何批量的转化成以下格式?
求赐教 谢谢!
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了。