Python Print函数添加不需要的新行

时间:2019-02-05 11:05:23

标签: python string data-processing

我有一个读取文件的脚本。该文件包含多行文本数据,每一行对应一个播放器,并且播放器的每个属性都由一个制表符分隔。

我的脚本将这条线分成每个播放器的数组,然后简单地将数据重构为一个字符串,我要保存到一个单独的文件中,以便新文件中的每一行对应一个播放器:

# -*- coding: utf-8 -*-

def main():
    exampleDataFile = open("exampleData.txt", "r")
    dataStorageFile = open("playerStrings.txt", "w+")

for line in exampleDataFile:
    modifiedLine = line.replace('“','"').replace('”','"')
    listOfComponents = modifiedLine.split("\t")
    uid = listOfComponents[0]
    gamerID = listOfComponents[1]
    userPhoneNumber = listOfComponents[2]
    _geoloc = listOfComponents[3]
    allocatedTimes = listOfComponents[4]
    clanName = listOfComponents[5]

    gamerString = ('let ' + uid + ' = player(gamerID: "' + gamerID + '", userPhoneNumber: "' + userPhoneNumber + '", _geoloc: makeCoordinates(points: (' + _geoloc + ")), allocatedTimes: makeallocatedTimes(" + allocatedTimes + '), clanName: "' + clanName + '")\n')
    print (gamerString)
    dataStorageFile.write(gamerString)

if __name__ == '__main__':
    main()

当我检查日志以及输出保存到的文件时,第一个输出将打印/保存到一行,这正是我想要的。但是,所有后续行都在最后的'")\n'处断开。我得到的是这样的:

let r2 = player(gamerID: "TE2", userPhoneNumber: "3456106340", _geoloc: makeCoordinates(points: (51.563601,  -0.118769)), allocatedTimes: makeallocatedTimes(mon:("0700","2300"),tue:("0700","2300"),wed:("0700","2300"),thu:("0700","2300"),fri:("0700","2300"),sat:("0700","2300"),sun:("0700","2300")), clanName: "Tesco
")

请注意")在另一行上的情况。这不是我想要的,我想要这样:

let r2 = player(gamerID: "TE2", userPhoneNumber: "3456106340", _geoloc: makeCoordinates(points: (51.563601,  -0.118769)), allocatedTimes: makeallocatedTimes(mon:("0700","2300"),tue:("0700","2300"),wed:("0700","2300"),thu:("0700","2300"),fri:("0700","2300"),sat:("0700","2300"),sun:("0700","2300")), clanName: "Tesco")

我尝试打印很长的字符串,并且每次打印都将它们全部打印/保存到一行,但是由于某些原因,当我打印/保存玩家输出时,我在单独的行上得到了")我不确定为什么吗?谢谢!

1 个答案:

答案 0 :(得分:2)

在读取文件时,Python不会 not 在行末删除换行符。这意味着该文件的内容类似

row1,value1
row2,value2

将被读取为两个字符串,包含"row1,value1\n"" row2,value2\n"

在清洁/预处理过程中进行类似modifiedLine = line.strip('\n')的操作。