我希望在Python 2.7中编写一个包含6行的简单文本文件。 我使用此代码:
import csv
export=open('./images2/test.tfw', "wb")
writer=csv.writer(export, delimiter=' ', quoting=csv.QUOTE_NONE)
writer.writerow('0.06')
writer.writerow('0.00')
writer.writerow('0.00')
writer.writerow('-0.06')
writer.writerow('-10.59')
writer.writerow('38.49')
export.close()
我进入文件:
0 . 0 6
0 . 0 0
0 . 0 0
- 0 . 0 6
- 1 0 . 5 9
3 8 . 4 9
但我不想要数字中的空格或其他任何东西,我只需要这个:
0.06
0.00
0.00
-0.06
-10.59
38.49
但是当我尝试delimiter=''
或delimiter=None
时,我会收到错误"必须设置分隔符" 。
如何在没有分隔符的情况下编写我的数字?也许这是一个非常基本的问题,但我无法在谷歌中找到它。谢谢!
答案 0 :(得分:4)
writerow
期望一个iterable,其中每个元素都将写入文件,由分隔符分隔。因此,当你给它一个字符串(它本身是一个可迭代的)时,它会将每个字符写入文件,由分隔符分隔。
你想要做的是将“行”作为字符串列表提供。在您的情况下,每行只有一个字符串,因此每行只提供一个字符串。
CSV格式需要某种分隔符。经典地,此分隔符是逗号 - 因此名称(CSV =逗号分隔值)。但是,如果你觉得需要使用不同的分隔符,你当然可以这样做(典型的选择包括空格,制表符,连字符等)
import csv
export=open('./images2/test.tfw', "wb")
writer=csv.writer(export, delimiter=',', quoting=csv.QUOTE_NONE)
writer.writerow(['0.06'])
writer.writerow(['0.00'])
writer.writerow(['0.00'])
writer.writerow(['-0.06'])
writer.writerow(['-10.59'])
writer.writerow(['38.49'])
export.close()
答案 1 :(得分:3)
正如评论中所说,您甚至不需要使用csv
模块。一个更简单的解决方案:
with open('./images2/test.tfw', 'w') as export:
export.write('0.06\n')
export.write('0.00\n')
export.write('0.00\n')
export.write('-0.06\n')
export.write('-10.59\n')
export.write('38.49')
答案 2 :(得分:1)
import csv
export=open('./images2/test.tfw', "wb")
writer=csv.writer(export, delimiter='', quoting=csv.QUOTE_NONE)
writer.writerow(['0.06'])
writer.writerow(['0.00'])
writer.writerow(['0.00'])
writer.writerow(['-0.06'])
writer.writerow(['-10.59'])
writer.writerow(['38.49'])
export.close()
我对csvwriter没有多少工作,但是如上所述在引号之间没有提供任何内容,或者可能没有引号的NUL也可以做到这一点?这是考虑您要在CSV中进行0分隔。
如果您只是想写文字,以下内容可能适合您的目的。如果您不想使用CSV分隔,则无需csvwriter。
a = open('./images2/test.tfw', "w")
a.write('0.06\n')
a.write'0.00\n')
a.write('0.00\n')
a.write('-0.06\n')
a.write('-10.59\n')
a.write('38.49\n')
a.close()
答案 3 :(得分:1)
“没有分隔符”,你说?我认为,除了新线之外。这只是writing lines of text in Python ...
data = (0.06, 0.00, 0.00, -0.06, -10.59, 38.49,)
with open('./images2/test.tfw', 'w') as export:
for line in data:
export.write('{}\n'.format(line))
答案 4 :(得分:0)
你可以这样做来解决字符串是序列的问题:
import csv
def write_string(writer, s):
return writer.writerow((s,))
with open('test.tfw', "wb") as export:
writer = csv.writer(export, quoting=csv.QUOTE_NONE)
write_string(writer, '0.06')
write_string(writer, '0.00')
write_string(writer, '0.00')
write_string(writer, '-0.06')
write_string(writer, '-10.59')
write_string(writer, '38.49')