试图创建字典,但不知道如何处理\\\\ n

问题描述

||
subject_dic = {}
inputFile = open(filename)
for line in inputFile:
    split_line = string.split(line,\',\')
    subject_dic[split_line[0]] = tuple(split_line[1:3])
print subject_dic
我越来越
{\'6.08\': (\'1\',\'10\\n\'),\'6.09\': (\'3\',\'7\\n\'),\'6.19\': (\'8\',\'19\'),\'6.10\': (\'8\',\'18\\n\'),\'6.00\': (\'10\',\'1\\n\'),\'6.01\': (\'5\',\'4\\n\'),\'6.02\': (\'5\',\'6\\n\'),\'6.03\': (\'2\',\'9\\n\'),\'6.04\': (\'1\',\'2\\n\'),\'6.05\': (\'1\',\'6.06\': (\'5\',\'19\\n\'),\'6.07\': (\'2\',\'6.13\': (\'9\',\'16\\n\'),\'6.18\': (\'10\',\'6.15\': (\'10\',\'6.16\': (\'6\',\'6.12\': (\'6\',\'3\\n\'),\'6.17\': (\'9\',\'6.14\': (\'10\',\'8\\n\'),\'6.11\': (\'6\',\'8\\n\')}
但我不知道如何从元组的末端删除
\'\\n\'
。这真的很简单,但是我找不到执行该操作的方法。这是因为我正在从文件中垂直读取(因此换行),但是我不希望字典中的那个“ѭ2”。 谢谢!     

解决方法

如果您使用的不是一个非常大的文件,则实际上可以完全避免使用
.strip()
。如果您使用ѭ5as作为字符串读取整个文件,然后对该字符串执行
.splitlines()
。 这是一个例子。我在更改代码的地方注释掉了您的代码。我将示例更改为不使用切片来交换显式变量分配。
subject_dic = {}
inputFile = open(filename)

# Turn \"line1\\nline2\\n\" into [\'line1\',\'line2\']
inputData = inputFile.read().splitlines()

#for line in inputFile:
for line in inputData:
    #split_line = string.split(line,\',\')
    #subject_dic[split_line[0]] = tuple(split_line[1:3])
    mykey,myval1,myval2 = line.split(\',\') # Strings always have .split()
    subject_dic[mykey] = (myval1,myval2) # Explicit tuple assignment

print subject_dic
输出:
{\'6.00\': (\'10\',\'1\'),\'6.01\': (\'5\',\'4\'),\'6.02\': (\'5\',\'6\'),\'6.03\': (\'2\',\'9\'),\'6.04\': (\'1\',\'2\'),\'6.05\': (\'1\',\'18\'),\'6.06\': (\'5\',\'19\'),\'6.07\': (\'2\',\'10\'),\'6.08\': (\'1\',\'6.09\': (\'3\',\'7\'),\'6.10\': (\'8\',\'6.11\': (\'6\',\'8\'),\'6.12\': (\'6\',\'3\'),\'6.13\': (\'9\',\'16\'),\'6.14\': (\'10\',\'6.15\': (\'10\',\'6.16\': (\'6\',\'6.17\': (\'9\',\'6.18\': (\'10\',\'6.19\': (\'8\',\'19\')}
    ,
split_line = split_line.strip()
看这里。     ,使用线条上的带子修剪新的线条。 str.strip([字符]) 返回删除前导和尾随字符的字符串的副本。 chars参数是一个字符串,指定要删除的字符集。如果省略或为None,则chars参数默认为删除空格。 chars参数不是前缀或后缀;而是删除其值的所有组合:     ,
line = line.strip() 
在循环的开始。     ,这应该工作:
subject_dic = {}
inputFile = open(filename) 
for line in map(lambda x: x.strip(),inputFile):
    split_line = string.split(line,\')
    subject_dic[split_line[0]] = tuple(split_line[1:3])
print subject_dic
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...