如何使用Python csv writer在字符串周围加上单引号?

2024-09-21 03:27:26 发布

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

with open("emails.csv", "w") as csvfile:
    for control_rent_email in control_group_renters:
        email_writer = csv.writer(csvfile, quotechar='"', quoting=csv.QUOTE_NONNUMERIC,delimiter=',')
        email_writer.writerow([control_rent_email])
    csvfile.close()

我在“emails.csv”中得到以下输出:

"susan@gmail.com"
"joe@gmail.com"
"sara@yahoo.com"

但我希望输出

'susan@gmail.com',
'joe@gmail.com',
'sara@yahoo.com'

如何将正确的参数放入csv.writer()中以获得所需的结果?

更新:

(一)

email_writer = csv.writer(csvfile, quotechar=''', quoting=csv.QUOTE_NONNUMERIC,delimiter=',')                                                                                            
SyntaxError: EOL while scanning string literal

2)如何放置“,”以使其看起来像输出结果?


Tags: csvcsvfilecomemailgmailcontrolquotewriter
3条回答

csv writer是一种可用于将多行写入文件的设备。你应该只创建一个。告诉它使用单个引号作为引号字符,并按以下方式使用:

with open("emails.csv", "w") as csvfile:
    email_writer = csv.writer(csvfile, quotechar="'", quoting=csv.QUOTE_NONNUMERIC,delimiter=',')
    for control_rent_email in control_group_renters:
        email_writer.writerow([control_rent_email])

我希望您给出了一个简单的例子,说明您真正需要的是什么;否则,当您每行只打印一个字符串时,为什么还要麻烦您呢?如果你真的想在除最后一行之外的每行后面加一个逗号,你的目标不是任何类型的CSV,你应该直接构造你的输出。

也就是说,可以通过将空字符串传递给writerow来获得尾随逗号,但前提是使用QUOTE_MINIMALQUOTE_NONE(这将抑制电子邮件周围的无意义引号),而不是QUOTE_NONNUMERIC;否则将在空字符串周围获得引号。

email_writer.writerow([control_rent_email, ""])

为了完整起见,下面介绍了如何在不使用最后逗号和全部内容的情况下,真正地生成所需的输出:

with open("emails.txt", "w") as output:
    output.write( ",\n".join("'"+r+"'" for r in control_group_renters) +"\n" )

更改其他人指出的引号字符或使用反斜杠转义。

   email_writer = csv.writer(csvfile, quotechar='\'', quoting=csv.QUOTE_NONNUMERIC,delimiter=',')

我们好像错过了你的第二个问题:

这是一个黑客因为我似乎不知道如何使用csv模块来实现这一点。不要使用csv.writer来编写文件,您可以这样尝试:

for control_rent_email in control_group_renters:
    csvfile.write('\'' + control_rent_email + '\'' + ',')

您也不需要显式地close将要写入的文件作为在不再被引用时打开它的方式。

我希望有人能用一种更简单的方式来解决这个问题,特别是使用csv.writer。不过,这样可以满足你的需要。

看来是你的报价。尝试:

with open("emails.csv", "w") as csvfile:
    for control_rent_email in control_group_renters:
        email_writer = csv.writer(csvfile, quotechar="'", quoting=csv.QUOTE_NONNUMERIC,delimiter=',')
        email_writer.writerow([control_rent_email])
    csvfile.close()

相关问题 更多 >

    热门问题