如何在python中编写没有任何分隔符的文本文件?

时间:2014-01-16 21:39:20

标签: python python-2.7 delimiter

我希望在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时,我会收到错误"必须设置分隔符" 。 如何在没有分隔符的情况下编写我的数字?也许这是一个非常基本的问题,但我无法在谷歌中找到它。谢谢!

5 个答案:

答案 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')