格式化文本文件中的字符串

时间:2017-12-04 16:05:23

标签: python python-3.x text-files string-formatting

我正在尝试逐行读取.txt文件中的文本格式。首先,我只想弄清楚如何只打印一行,然后尝试多行。我已经设法打印了一行的文本,但是当我尝试将它们格式化时,我希望它看起来,在我尝试打印该行的最后一个单词后使用索引-1创建一个新行。最后一个字是创建一个新行,所以我想我需要找到一种方法来将行读作单独的字符串,但我不确定。

这是我的程序的代码:

def makeTuple (employee):

    myTuple = employee.split(" ")
    payroll, salary, job_title, *othernames, surname = myTuple
    myTuple = tuple(myTuple)
    return(myTuple)

def printTuple (data):

    employee_str = "{}, {} {:>8} {} {:>5}"
    print(employee_str.format(data[-1], " ".join(data[3:-1], data[0], data[2], data[1]))


get_file = input(str("Please enter a filename: "))    
path = get_file + ".txt"

try:
    text_file = open(path, "r")
except IOError:
    print('The file could not be opened.')
    exit()


record = text_file.readline()

myTuple = makeTuple(record)
printTuple(myTuple)

这是我正在阅读的文本文件:

12345 55000 Consultant Bart Simpson
12346 25000 Teacher Ned Flanders
12347 20000 Secretary Lisa Simpson
12348 20000 Wizard Hermione Grainger

我现在得到的输出是:

Simpson
, Bart    12345 Consultant 55000

我希望它看起来像:

Simpson, Bart    12345 Consultant 55000

2 个答案:

答案 0 :(得分:2)

您在"Simpson"之后收到换行符,因为这是文本文件中的内容。

使用功能strip()Documentation)在您阅读该行时删除换行符。

更改以下一行代码,您的程序应该可以正常工作。

record = text_file.readline().strip()

答案 1 :(得分:1)

您可以使用拆分和加入来执行此操作:

s = '''Simpson
, Bart    12345 Consultant 55000'''

print(''.join(s.split('\n')))