我想说:为每个campaigns[0]
(即:"New York City", "DC", "New York", "Boston", "Detroit", "St. Louis", "Cleveland"
),然后为每个row[2]
一个CSV内,与campaigns[1], campaigns[2], campaigns[3]
更换[city_name], [state_abbrev], [state_full]
。Python的CSV嵌套For循环的字符串替换
import csv
campaigns = [
["New York City", "New York City", "New York", "NY"],
["DC", "Washington DC", "Washington DC", "DC"],
["New York", "New York", "New York", "NY"],
["Boston", "Boston", "Massachusetts", "MA"],
["Detroit", "Detroit", "Michigan", "MI"],
["St. Louis", "St Louis", "Missouri", "MO"],
["Cleveland", "Cleveland", "Ohio", "OH"]
]
with open('ExpandCampaign.csv', 'r') as f:
reader = csv.reader(f)
print(next(reader, None)) # Print the header
for campaign in campaigns:
for row in reader:
row[0] = campaign[0]
row[2] = row[2].replace('[city_name]', campaign[1].lower())
row[2] = row[2].replace('[state_full]', campaign[2].lower())
row[2] = row[2].replace('[state_abbrev]', campaign[3].lower())
print(row)
问题:上面的代码只输出纽约市,而不是其他广告系列名称[0]。
['New York City', 'Design', 'basement design', 'Exact']
['New York City', 'Floor Plans', 'basement design plans', 'Exact']
['New York City', 'Design', 'basement designs', 'Exact']
['New York City', 'Finishing', 'basement finished remodeling', 'Exact']
['New York City', 'Finishing', 'basement finishers ny', 'Exact']
['New York City', 'Finishing', 'basement finishing', 'Exact']
['New York City', 'Finishing', 'basement finishing new york city', 'Exact']
我不明白为什么它不通过每个campaign[0]
名称迭代和它只是看到纽约市。例如,如果我打印:
with open('ExpandCampaign.csv', 'r') as f:
reader = csv.reader(f)
print(next(reader, None)) # Print the header
for campaign in campaigns:
print(campaign[0])
我得到:
['Campaign', 'Ad Group', 'Keyword', 'Type']
New York City
DC
New York
Boston
Detroit
St. Louis
Cleveland
我试着周围的开关语句,但我所得到的结果是这样的:
['New York City', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
['DC', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
['New York', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
['Boston', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
['Detroit', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
['St. Louis', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
['Cleveland', 'Finishing', 'basement finishing in new york city ny', 'Phrase']
看看“纽约城”如何出现在非纽约市的活动中?这是我不想发生的事情,因为这些城市只与其各自的广告系列相关,而不是彼此相关。我如何解决这个问题的逻辑显然是在某个地方。