Python奇怪的换行符,其中没有写入新行

Python奇怪的换行符,其中没有写入新行,python,list,dictionary,printing,Python,List,Dictionary,Printing,我正在尝试用Python打印一个中等大小的列表,我正在做的是在一行上打印整个列表,以测试程序,确保以正确的顺序将正确的数据放入列表中。我读入2个文件,并将所有数据放入2本字典。然后,我将字典分成几个部分,并将所有相似的数据放入一个列表中。我对Python非常陌生,这是我在字典上找到的教程,我有点被卡住了。此行将在一行上打印列表: print '[%s]' % ', '.join(map(str, player_list)) 但这一行将列表中的每个值打印在单独的一行上,我不希望这样: print

我正在尝试用Python打印一个中等大小的列表,我正在做的是在一行上打印整个列表,以测试程序,确保以正确的顺序将正确的数据放入列表中。我读入2个文件,并将所有数据放入2本字典。然后,我将字典分成几个部分,并将所有相似的数据放入一个列表中。我对Python非常陌生,这是我在字典上找到的教程,我有点被卡住了。此行将在一行上打印列表:

print '[%s]' % ', '.join(map(str, player_list))
但这一行将列表中的每个值打印在单独的一行上,我不希望这样:

print '[%s]' % ', '.join(map(str, army_list))
以下是我的代码(如果需要),可以添加到列表中:

import collections
import operator
terridict = {}
gsdict = {}
terr_list = []
player_list = []
army_list = []
list_length = []
total_territories = 0
with open('territories.txt', 'r') as territory:
    for line in territory:
        terridict["territory"], terridict["numeric_id"], terridict["continent"] = line.split(',')

with open('gameState.txt', 'r') as gameState:
    for line in gameState:
        gsdict["numeric_id"], gsdict["player"], gsdict["num_armies"] = line.split(',')
        terr_num = gsdict["numeric_id"]
        player_num = gsdict["player"]
        army_size = gsdict["num_armies"]
        if terr_num >= 1 and player_num >= 1 and army_size >= 1:
            terr_list.append(terr_num)
            player_list.append(player_num)
            army_list.append(army_size)
            player_list.sort()
            counter = collections.Counter(player_list)
            print (counter)
            total_territories = total_territories + 1
        x = counter
        sorted_x = sorted(x.items(), key=operator.itemgetter(0))
        counter = sorted_x
        print terr_num, player_num, army_size

print counter
print "Number of territories: %d" % total_territories
print '[%s]' % ', '.join(map(str, terr_list))
print '[%s]' % ', '.join(map(str, player_list))
print '[%s]' % ', '.join(map(str, army_list))
当您读入该行时,它以换行符结尾。例如,我在这里猜测:

"1 nelson2013 23\n"
按空间分割时,会得到以下结果:

["1", "nelson2013", "23\n"]
请注意,玩家名称不以换行符结尾,但军队大小以换行符结尾。当你将军队规模合并在一起时,结果是这样的:

"23\n, 18\n, 121\n"
i、 e.由换行符分隔,使它们每行打印一条


要解决这一问题,您需要在进一步处理之前,立即在循环的顶部调用online。

您可能需要修复现在的行,因为line.rsplit本身不能很好地工作。根据阿马丹的话:

line = line.rsplit()

这样,新行字符将被删除,并且可以将行设置为不涉及新行字符的条件。我试过了,效果很好。

它必须只在一条线上吗?如果你真的只是想知道它们的顺序是否正确,只需在列表中循环。它将为您提供从第一个到最后一个的值。对于玩家列表中的i:打印iPerfect!成功了!我发现如果我设置line=line.rstrip,它就会工作。万分感谢!