利用python 读写csv文件
1、读文件
importcsv
csv_reader=csv.reader(open("data.file",encoding="utf-8"))
forrowincsv_reader:
print(row)
csv_reader把每一行数据转化成了一个list,list中每个元素是一个字符串。
2、写文件
读文件时,我们把csv文件读入列表中,写文件时会把列表中的元素写入到csv文件中。
list=["1","2","3","4"] out=open(outfile,"w") csv_writer=csv.writer(out) csv_writer.writerow(list)
可能遇到的问题:直接使用这种写法会导致文件每一行后面会多一个空行。
解决办法如下:
out=open(outfile,"w",newline="") csv_writer=csv.writer(out,dialect="excel") csv_writer.writerow(list)
在stackoverflow上找到了比较经典的解释,原来python3里面对str和bytes类型做了严格的区分,不像python2里面某些函数里可以混用。所以用python3来写wirterow时,打开文件不要用wb模式,只需要使用w模式,然后带上newline=''。
3、示例
- 简单读写
importcsv
classwriter:
def__init__(self):
self.dict={
"标题":"标题",
"链接":"链接",
"服务":"服务",
"dsr":"dsr",
"店铺名":"店铺名",
"价格":"店铺名",
"付款人数":"付款人数",
"发货地":"发货地",
}
out=open("outfile.csv","w",newline="")
self.csv_writer=csv.writer(out,dialect="excel")
self.csv_writer.writerow(self.dict)
defwriter_to(self,key_value):
self.csv_writer.writerow(key_value)
if__name__=="__main__":
a=writer()
new={
"链接":"http://www.baidu.com",
"标题":"我是标题",
}
a.dict.update(new)
print(a.dict)
a.writer_to(a.dict.values())
- 结合爬虫
importcsv
fromseleniumimportwebdriver
fromselenium.webdriver.common.byimportBy
fromselenium.webdriver.support.uiimportWebDriverWait
fromselenium.webdriver.supportimportexpected_conditionsasEC
fromselenium.common.exceptionsimportTimeoutException,NoSuchElementException
fromselenium.webdriver.common.action_chainsimportActionChains
driver=["1","2"]
colspan=["1","2"]
try:
out=open("类目.csv","w",newline="")
exceptPermissionError:
print("文件被其他程序占用")
input("")
csv_writer=csv.writer(out,dialect="excel")
csv_writer.writerow(["宝贝ID","类目"])
defopen_chrome():
driver[0]=webdriver.Chrome()
driver[0].get("https://www.dianchacha.com")
input("请登陆后按回车:")
defEC_located(one_group,value):
"""
目的:简化代码长度,参数1选择one或者group切换选中模式
:paramvalue:要找的值【CSS选择器】
:return:选择到的对象
"""
wait=WebDriverWait(driver[0],10)
ifone_group=="one":
try:
ecl=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,value)))
returnecl
exceptTimeoutException:
print(value,"1元素未加载成功,等待超时")
else:
try:
ecl=wait.until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR,value))
)
returnecl
exceptTimeoutException:
print(value,"1元素---组---未加载成功,等待超时")
defoperating(ID):
#先获取ID输入框
driver[0].get("https://www.dianchacha.com/item/info/index/iid/"+ID)
html=driver[0].page_source
if"未能找到亲的宝贝"notinhtml:
colspans=EC_located("group",".colspan-1")
colspan[0]=str(colspans[1].text).replace("宝贝类目:","")
else:
returnoperating(ID)
print(colspan)
defwriter_txt():
csv_writer.writerow([url[0],colspan[0]])
print("保存",url[0],colspan[0],"成功")
url=["0","1"]
defmain():
open_chrome()
file="宝贝ID.txt"
withopen(file)asf:
forlineinf.readlines():
url[0]=line
print(line)
operating(url[0])
writer_txt()
out.close()
print("已完成")
if__name__=="__main__":
main()
以上就是利用python读写csv文件的详细内容,更多关于python读写csv文件的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。