用 CSV 中的值替换字符串的一部分,将所有值保存在 CSV PYTHON
Posted
技术标签:
【中文标题】用 CSV 中的值替换字符串的一部分,将所有值保存在 CSV PYTHON【英文标题】:Replace part of a string with values from CSV, save all values in CSV PYTHON 【发布时间】:2021-05-24 01:11:59 【问题描述】:我有一个包含一百万个 pin 的列表和一个在 URL 中包含 pin 的 URL
例子:
https://www.example.com/api/index.php?pin=101010&key=113494
我必须使用 csv 文件中的一百万个值列表(例如 093939,493943,344454)更改 pin 的数字“101010”,然后将所有这些新 URL 保存到 csv 文件中。
这是我迄今为止尝试过但没有奏效的方法:
def change(var_data):
var = str(var_data)
url = 'https://www.example.com/api/index.php?pin=101010&key=113494'
url1 = url.split('=')
url2 = ''.join(url1[:-2] + [var] + [url1[-1]])
print(url2)
change('xxxxxxxxxx')
这也适用于进入 json 页面的 api 请求。使用python然后重复我保存在csv文件中的这些url是最好的方法吗?我想为我拥有的所有 pin 收集一些信息并将其保存到 BigQuery 数据库,或者我可以连接到 Google Data Studio 的某个地方,以便能够使用所有这些数据创建仪表板。
有什么想法吗?您认为完成这项工作的最佳方法是什么?
【问题讨论】:
我建议将这个问题分成两个单独的问题。首先,您如何读取、转换和写入 csv?其次,关于最佳实践的问题。 【参考方案1】:回答问题的第一部分,change
函数的更改返回使用 f 字符串的 url 列表。
这可以通过列表理解来应用。
变量url_variables
将是您从另一个文件中读取的变量的整数列表。
然后将 url 列表写入 csv 中的行。
import csv
url_variables = [93939, 493943, 344454]
def change(var_data):
var_data = str(var_data)
url = 'https://www.example.com/api/index.php?pin='
key = 'key=113494'
new_url = f'urlvar_data&key'
return(new_url)
url_list = [change(x) for x in url_variables]
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f)
for val in url_list:
writer.writerow([val])
在 output.csv 中输出
【讨论】:
【参考方案2】:1. 问题的第一部分:(替换“pin=”和“&”之间的数字)我将使用来自Change a text between two strings in Python with Regex 帖子的答案:
import re
def change(var_data):
var = str(var_data)
url = 'https://www.example.com/api/index.php?pin=101010&key=113494'
url2 = re.sub("(?<=pin=).*?(?=&)",var,url)
print(url2)
change('xxxxxxxxxx')
这里我使用内置包“re”中的 sub 方法和 RegEx Lookarounds sintax,其中:
(?<=pin=) # Asserts that what immediately precedes the current position in the string is "pin="
.*? # is the occurrence of any character
(?=&) #Asserts that what immediately follows the current position in the string is "&"
这是formal explanation about the Lookarounds syntax。
2. 问题的第二部分:正如另一个答案所解释的,您可以按行在 csv 文件中注册 url,但我建议您阅读有关使用 python 处理 csv 文件的this 帖子并且您可以给自己一个想法,以了解您想要保存它们的方式。
我的英语不是很好,但我希望我能很好地解释自己。
【讨论】:
以上是关于用 CSV 中的值替换字符串的一部分,将所有值保存在 CSV PYTHON的主要内容,如果未能解决你的问题,请参考以下文章
Azure DevOps 如何在发布时替换服务结构项目的 Cloud.xml 参数中的值,这些值作为变量保存