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