【问题标题】:Replace part of a string with values from CSV, save all values in CSV PYTHON用 CSV 中的值替换字符串的一部分,将所有值保存在 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?其次,关于最佳实践的问题。

标签: python json api csv bigdata


【解决方案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'{url}{var_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 帖子并且您可以给自己一个想法,以了解您想要保存它们的方式。

    我的英语不是很好,但我希望我能很好地解释自己。

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 2021-10-20
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多