python csv新林

2024-06-28 11:09:27 发布

您现在位置:Python中文网/ 问答频道 /正文

iam使用此代码将db表转换为csv文件,它正在转换为csv,但不是使用双引号换行/换行,有人能帮我吗

import MySQLdb
import csv
conn = MySQLdb.connect(user='root',  db='users', host='localhost')
cursor = conn.cursor()
cursor.execute('SELECT * FROM users.newusers')
ver = cursor.fetchall()
ver1 = []
for ve in ver:
    ve = str(ve).replace("', '","|").replace(", '","|").replace(","," ").replace("  "," ").replace("|",",")
    ver1.append(ve)
print ver1
csv_file = open('filename', 'wb')
writer = csv.writer(csv_file)
writer.writerow(ver1)       csv_file.close()                                                                                

电流输出

"(114L,New,9180971675,Ravi Raju,RAJRAVI,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.0.1,no,yes')","(115L,New,9180971676,Rajendran Mohan,rajemoh,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.10.10,no,yes')"

预计出局

 114L,New,9180971675,Ravi Raju,RAJRAVI,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.0.1,no,yes


 115L,New,9180971676,Rajendran Mohan,rajemoh,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.10.10,no,yes

Tags: csvnoimportnewdbvecursorreplace
1条回答
网友
1楼 · 发布于 2024-06-28 11:09:27

SQL查询将返回来自fetchall()的元组列表中的结果。在当前的方法中,遍历这个列表,但对每个元组调用str(),从而将整个元组转换为其字符串表示形式。你知道吗

相反,您可以对每个元组使用列表理解,将其转换为嵌套列表格式并应用replace()操作。你知道吗

for ve in ver:
    ver1.append([str(item).replace(<something>) for item in ve])

在最后一步中,您将使用csv.writerow(),它被设计为在for循环中使用。如果您的列表嵌套在[[row1], [row2]]格式中,那么您可以将其更改为writerows。另外,最好使用上下文管理器with来处理文件,因为一旦操作完成,它将自动关闭文件。你知道吗

with open('filename.csv', 'wb') as csv_file:
     writer = csv.writer(csv_file)
     writer.writerows(ver1)

相关问题 更多 >