用 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的主要内容,如果未能解决你的问题,请参考以下文章

Jquery:用数组中的值替换字符串

Azure DevOps 如何在发布时替换服务结构项目的 Cloud.xml 参数中的值,这些值作为变量保存

按 R 中 csv 中的值选择行并将它们保存在新的 csv 文件中

正则表达式 - 用 oracle 中的值替换字符串集

使用熊猫替换列中的值时出错[重复]

用相同的值替换特定行中的所有 NaN - Matlab