字符串和文件

时间:2009-05-21 08:28:20

标签: python string

假设这是我的语言列表。

aList = ['Python','C','C++','Java']

我如何写入如下文件:

Python      : ...
C           : ...
C++         : ...
Java        : ...

我用rjust()来实现这个目的。没有它,我该怎么办?

我在这里手动完成。我想避免那个,即;它应该自动订购

3 个答案:

答案 0 :(得分:5)

你是说这个吗?

>>> languages = ['Python','C','C++','Java']
>>> f = open('myfile.txt', 'w')
>>> print('\n'.join('%-10s: ...' % l for l in languages), file=f)
>>> f.close()
>>> print(open('myfile.txt').read())
Python    : ...
C         : ...
C++       : ...
Java      : ...

这使用format specification mini language。请注意print语句使用3.0语法。 (是的,自从Brian's回答2.5.2文档的链接后我改变了这一点。只是为了对比。)

答案 1 :(得分:5)

您可以使用string formatting运算符

执行此操作
f=open('filename.txt','w')
for item in aList:
    print >>f, "%-20s : ..." % item

20是字段宽度,而“ - ”表示左对齐。

答案 2 :(得分:0)

自动确定冒号位置(使用最大宽度)和语言顺序(按字母顺序排序):

languages = ['Python','C','C++','Java']
maxlen = max(map(len, languages))
with open('langs.txt', 'w') as f:
    for L in sorted(languages):
        f.write('%-*s: ...\n'% (maxlen, L)) 

print open('langs.txt').read()

输出:

C     : ...
C++   : ...
Java  : ...
Python: ...