我正在编写一个应使用定界符','
class DelFile(WriteFile):
def __init__(self, TextFile):
self.TextFile = TextFile
def write(self, Mssg, Delimiter):
with open(self.TextFile, "w+") as csv_file:
writer = csv.writer(csv_file, delimiter=',')
for item in Mssg:
writer.writerow(item)
我在这里称呼它
c = DelFile('text3.csv')
c.write(['a','b','c'], ',')
结果,我得到了:
我想将内容写为行而不是列 a, b, c.
,而且我不明白为什么结果会跳线。任何帮助深表感谢!
答案 0 :(得分:0)
如上所述,在Python 3.x中,使用csv.writer()
对象时,应使用newline=''
参数打开文件。其次,将一整行传递给write()
函数,而writerow()
占据一整行,无需使用for循环将其拆分为单个值。如您所见,这会将每个值的结果写为单独的行。相反,只需将整个行编写如下:
import csv
class DelFile():
def __init__(self, TextFile):
self.TextFile = TextFile
def write(self, row, delimiter):
with open(self.TextFile, 'w+', newline='') as csv_file:
writer = csv.writer(csv_file, delimiter=delimiter)
writer.writerow(row)
c = DelFile('text3.csv')
c.write(['a','b','c'], ',')
这将使您text3.csv
包含:
a,b,c
注意:这种方法效率很低,因为您实际上在为每一行打开和附加文件。如果只写几行,这可能没问题,但是更好的方法也许是保持文件打开直到删除类。