根据csv文件更改字符串

时间:2016-08-11 07:33:39

标签: python csv replace

我必须打开几个网站来检查一些东西。每个页面的链接之间的唯一区别是我存储在CSV文件中的ID。 我想遍历CSV文件并替换每个网站的ID。

我想用replace语句执行它并更改链接中的xxx。但它没有改变id并尝试多次打开与xxx的链接。

import webbrowser
import csv

link = "https://website.com/de/tour/xxx/geometrie.html"
with open('spielbergList.csv', 'rb') as f:
     reader = csv.reader(f)
     for row in reader:
         print(row)
         link.replace("xxx", str(row))
         webbrowser.open(link)
         print(link)
         link = "https://website.com/de/tour/xxx/geometrie.html"

3 个答案:

答案 0 :(得分:1)

str.replace会返回一个新字符串,因此您必须抓住它:

link = link.replace("xxx", str(row))

虽然最好使用"模板"在每次迭代中使用link将网址重新分配给xxx。 使用模板网址并使用format创建所需网址的示例:

import webbrowser
import csv

basic_url = "https://website.com/de/tour/{}/geometrie.html"
with open('spielbergList.csv', 'rb') as f:
     reader = csv.reader(f)
     for row in reader:
         print(row)
         webbrowser.open(basic_url.format(row))

答案 1 :(得分:0)

字符串的replace方法返回一个新字符串,并且不会修改旧字符串,因此您必须在另一个变量中捕获新字符串或重新使用链接变量

link = link.replace("xxx", str(row))

原因是字符串是不可变的(你不能在创建后修改它们)

>>> a = 'hello world'
>>> a.replace('hello', 'hi')
'hi world'
>>> a # a is still hello world
'hello world'
>>> a = a.replace('hello', 'hi')
>>> a
'hi world'
>>> 

答案 2 :(得分:0)

您也可以使用format

for row in reader:
    webbrowser.open('https://website.com/de/tour/{0}/geometrie.html'.format(row))