>我有一个 csv,我想用它来在 api 中搜索数据,但是存储用于 api 搜索的数据的行可以包含第二个值,用;
喜欢这个:
2 Jan Rohls Kunst und Religion zwischen Mittelalter und Barock : von Dante bis Bach -
3 Karl-Markus Ritter Der Dom zu Speyer : weltliche Macht und christlicher Glaube 9783806241280; 3806241287
4 Hape Kerkeling Ich bin dann mal weg : meine Reise auf dem Jakobsweg 9783890296005; 3890296009
我想删除;
之后的值,以便只有 9783XXX 保留在 ISBN 行中。如果代码可以包含在现有流程中,那就太完美了,但我还没有找到如何管理它的方法。
以下是完整提取的csv: https://pastebin.com/frAK9NBG
这些是我用来
a) CLean 一个预先存在的 csv:
import pandas as pd
import glob
import os
path= "./**/extract/"
filelist=glob.glob('./**/Reihe A/Reihe*.csv',recursive=True)
print(filelist)
for file in filelist:
data=pd.read_csv(file, sep="t", encoding='utf8')
data.columns
title=[] #this gets all the titles
for row in data['Titel']:
title.append(row)
author=[] #this gets all the authors
for row in data['Verfasser']:
author.append(row)
isbn=[] #this gets all the isbns
for row in data['ISBN']:
isbn.append(row)
df=pd.DataFrame({'Verfasser': author, 'Titel': title, 'ISBN': isbn}) #create new csvs based on extracted data
#save csv in set path
df.to_csv(path + file +"_" +"extract", sep='t', encoding='utf8')
#df.to_csv(path + file +'_' + 'extract.csv', sep="t") #add endpath , encoding='utf-8' back if needed
print(file +'_' + 'extract.csv' + ' saved to ' + path)
和
b) 搜索接口
import glob
import pandas as pd
from urllib.request import urlopen
#import generated csvs from other script
filelist=glob.glob('./**/Reihe*_extract.csv',recursive=True)
print(filelist)
for file in filelist:
#read csv, make a list of all isbns
data=pd.read_csv(file, sep="t", encoding='utf8')
isbnlist=[]
for row in data['ISBN']:
isbnlist.append(row)
#for each isbn in list, get data from api
for isbn in isbnlist:
url = 'http://sru.k10plus.de/gvk!rec=1?version=1.1&operation=searchRetrieve&query=pica.isb%3D[isbn]&maximumRecords=10&recordSchema=marcxml'
url = url.replace('[isbn]', isbn)
print(url)
截至目前,我正在根据代码的功能(干净的csv,搜索API等)拆分代码,但我计划制作一个为最终用户完成所有操作的启动器脚本。
任何帮助,不胜感激。
试试这个,按分隔符拆分并保持想要的拆分:
data['ISBN'] = [x.split(' ')[0] for x in data['ISBN']] #keeps first portion of split.