将URL字符串替换为CSV中的值



希望你做得好,我有一个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])

相关内容

  • 没有找到相关文章

最新更新