希望你做得好,我有一个csv文件,我有4列:
id, h, w, x, y
ddd:1234 52 11 22 33
和下面的链接中,我想用csv中的属性替换链接中的相同属性:
www.example.com/ImagingService/imagingService ? ddd: id = 0104: image&coords = ddd: 0104: alto&w = 244 x = 12 h = 321 y = 12
如何将url中的id,h,w,x,y替换为CSV中的id,h,w,x,y ?
任何帮助都将非常感激。
您可以使用PythonDictReader
将CSV文件的每一行作为字典读取。然后可以将其传递给urlencode
,后者返回正确编码的URL以供使用。例如:
from urllib.parse import urlencode
import csv
with open('parameters.csv', newline='') as f_input:
csv_input = csv.DictReader(f_input)
for row in csv_input:
url = f"https://www.example.com/ImagingService/imagingService?{urlencode(row)}"
print(url)
如果你有一个parameters.csv
文件里面有以下内容:
id,h,w,x,y
ddd:1234,52,11,22,33
aaa:5678,62,44,55,66
您将得到以下输出:
https://www.example.com/ImagingService/imagingService?id=ddd%3A1234&h=52&w=11&x=22&y=33
https://www.example.com/ImagingService/imagingService?id=aaa%3A5678&h=62&w=44&x=55&y=66
在您的示例中,有一个coords
参数,不太清楚它是如何创建的。它可以作为CSV文件中的另一列添加,也可以在url行之前添加一行,如下所示:
row['coords'] = row['id'] # or whatever format is needed
注意:如果您打算使用requests
库,则不需要urlencode()
。例如:
r = requests.get("https://www.example.com/ImagingService/imagingService", params=row)
您可以将每个URL写入输出CSV文件,如下所示(目前只有一列)
from urllib.parse import urlencode
import csv
with open('parameters.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:
csv_input = csv.DictReader(f_input)
csv_output = csv.writer(f_output)
csv_output.writerow(['url']) # write the header
for row in csv_input:
url = f"https://www.example.com/ImagingService/imagingService?{urlencode(row)}"
print(url)
csv_output.writerow([url])