Python奇怪的新行,没有新行

2024-09-21 03:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python打印一个中等大小的列表,我所做的是在一行上打印整个列表,以测试程序,确保正确的数据以正确的顺序放入列表。我读入两个文件,把所有的数据放进两本字典里。然后,我将字典分成几个部分,并将所有相似的数据放入一个列表中。我对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))

Tags: map列表counternumlisttotalplayerprint
2条回答

你可能想修复现在的线条,因为行.rsplit()本身工作不太好。根据阿玛丹的话:

line = line.rsplit()

通过这种方式,新行字符被删除,并且可以将行设置为不涉及新行字符的条件。我试过了,结果成功了。你知道吗

line,读入时,以换行符结尾。例如(我在这里猜):

"1 nelson2013 23\n"

当你split按空格排序时,你会得到:

["1", "nelson2013", "23\n"]

请注意,玩家名称不会以换行符结尾,但军队大小会以换行符结尾。当你加入军队时,他们的结局是这样的:

"23\n, 18\n, 121\n"

也就是说,用换行符分隔,这使它们每行打印一条。你知道吗

为了解决这个问题,您需要在进一步处理它之前,立即在循环顶部调用line上的^{}。你知道吗

相关问题 更多 >

    热门问题