Python 3.3 - 格式化问题

时间:2015-09-19 21:02:38

标签: python string-formatting

我有2个我已创建的程序。第一个文件写入一个名为celeb.txt的文件文件,其中包含用户输入的名人姓名列表。我的第二个代码读取该列表并显示它。

该代码适用于这两个程序,但我似乎无法使我的格式正确。我是垂直列出的名字而不是直线。我也不想将代码合并到一个程序中。

好的,这是第一个让用户结束名人姓名的代码:

import sys

def main():
myfile = open('celeb.txt', 'w')
celeb = input('Enter celebrity name or Enter to quit ')
if celeb:
    myfile.write(str(celeb)+ '\n')

else:
    sys.exit(0)

myfile.close()
print('File was created and closed')

main()

这是我的代码,它读取.txt并输出名称。我无法弄清楚如何将名称1列在另一个上面而不是一条直线上。

def main():
myfile = open('celeb.txt', 'r')

line1 = myfile.readline()

myfile.close()

print(line1)

main()

1 个答案:

答案 0 :(得分:0)

如果您想要多个名字,请一次取名:

def get_names(fle):
    with open(fle,"a") as f:   
        while True:
            inp = input("Enter a name or 'q' to quit :")
            if inp == "q":
                return 
            f.write("{}\n".format(inp))

def read_names(fle):
    # open names file 
    with open(fle) as f:
        # iterate over the file 
        # printing a name/line at a time
        for name in f:
            print(name)

或者,如果您在一行中使用多个名称,请让用户在写入之前分隔名称并进行拆分:

def get_names(fle):
    with open(fle,"a") as f:
        inp = input("Enter names separated by a space :")
        f.writelines(("{}\n".format(n) for n in inp.split()))

def read_names(fle):
    with open(fle) as f:
        for name in f:
            print(name)