Python读取CSV生成URL时,如何去除列表的[]与单引号?
解决URL中多余方括号和单引号的问题
嘿,我来帮你搞定这个小问题!你现在生成的URL里带['Easton']这种格式,核心原因是你读取CSV时把整行列表直接存进了towns数组——csv.reader返回的每一行row本身就是一个列表(哪怕每行只有一个值),所以当你拼接URL时,Python会把这个列表转换成它的字符串表示(也就是带方括号和引号的样子)。
具体修改步骤
修正城镇列表的读取逻辑:
把读取城镇时的towns.append(row)改成towns.append(row[0]),这样你存的就是每行里的第一个(也是唯一一个)字符串值,而不是整个列表。简化URL生成的循环(可选但更Pythonic):
不用通过range(len(towns))来遍历索引,直接遍历towns里的每个城镇字符串,代码更简洁易读。用
with语句管理文件(优化):
原来的f = open(...)最好换成with open(...) as f,这样Python会自动帮你关闭文件,避免资源泄漏。
修改后的完整代码
import csv # 读取需要爬取的城镇列表,用with语句自动管理文件 with open('townList.csv', 'r') as f: reader = csv.reader(f) towns = [] for row in reader: # 取每行的第一个元素(城镇名称),存入列表 towns.append(row[0]) # 基础URL,URL剩余部分遵循'town-state-abbreviation'格式 base_url = "https://datausa.io/profile/geo/" url_list = [] # 直接遍历towns里的每个城镇字符串 for town in towns: url = f'{base_url}{town}-pa' url_list.append(url) print(url_list) # 写入结果文件,同样用with语句 with open('urls.csv', 'w') as output: writer = csv.writer(output, lineterminator='\n') for val in url_list: writer.writerow([val])
效果验证
修改后生成的URL就会变成你期望的样子:https://datausa.io/profile/geo/Easton-pa,完全去掉了多余的方括号和单引号。
内容的提问来源于stack exchange,提问作者Pete Renda
相关产品推荐
相关产品推荐

