Python 试图将外部文件读入词典
好的,我正在尝试将外部文件读入字典,但是我收到一些语法错误。读入的线索必须替换它们在编码单词列表中配对的字母 我读入字典并替换符号的代码如下Python 试图将外部文件读入词典,python,syntax,Python,Syntax,好的,我正在尝试将外部文件读入字典,但是我收到一些语法错误。读入的线索必须替换它们在编码单词列表中配对的字母 我读入字典并替换符号的代码如下 d = {} def read_clues(clues): global d with open("hey.txt") as f: for line in f: (key, val) = line[1], line[0] d[key] = val def replace_s
d = {}
def read_clues(clues):
global d
with open("hey.txt") as f:
for line in f:
(key, val) = line[1], line[0]
d[key] = val
def replace_symbols(clues, words):
global d
for word in range(len(words)):
for key, value in d.items():
words[word] = words[word].replace(key, value)
在程序的主要部分,我有调用replace_符号的代码。然而,在最后一行的print键之后,我得到了一个语法错误。代码如下所示
#REPLACES LETTERS
print("======== The clues have been replaced ===========")
replace_symbols(clues, words)
for key, value in d.items():
print key, value // This will print the symbols and letters
假设
hey.txt
的键和值之间有一个空格,下面的代码应该可以工作:
def read_clues(clues):
global d
with open("hey.txt") as f:
for line in f:
stuff = line.split(" ") #split each line into parts
(key, val) = stuff[1], stuff[0]
d[key] = val
如果分隔符不是空格,只需将其作为参数包含在
split()
中,代码中还有一些其他问题,但由于您询问的是语法错误,几乎可以肯定是这一行:
print key, value // This will print the symbols and letters
首先,/
在Python中不是“comment”的意思,而是“整数除法”。因此,您要求它将值
除以此
(这可能会引发名称错误
,因为您的代码中不太可能有任何名称为此
),然后包含一组以开头的其他标识符将
。一行中包含两个标识符的字符串的语法无效
如何用Python编写注释?使用#
,而不是/
:
print key, value # This will print the symbols and letters
其次,如果您使用的是Python3.x,print
与其他任何函数一样,是一个普通函数,因此它的参数必须放在括号中,就像所有其他函数调用一样。(鉴于print
调用了几行代码,我敢打赌您使用的是Python3.x。)很可能您是从Python2.x的一些代码中复制的。Python2和Python3之间有一些重要的区别,这意味着并非Python2的所有代码都可以复制并粘贴到Python3中。这是其中一个不起作用的例子。因此:
print(key, value) # This will print the symbols and letters
但是如果您使用的是Python2.x,则不要进行第二次更改;否则,您将只打印一个元组,而不是用空格分隔的两个字符串。(例如,
Print1,2
打印12
,但是print(1,2)
打印(1,2)
),除了其他帖子中提到的问题外:
vsprint
(取决于python版本)print()
- 使用
进行评论(
是而不是评论)/
for line in f:
(key,val) = line[1], line[0]
这意味着行
是每一行。假设一行只是一个新行,没有其他文本。然后,在尝试读取行[1]
时,您将得到一个索引器
此外,这可能是一个设计问题。当您阅读行[1]
和行[0]
时,实际上您只是在阅读行中的第一个和第二个字符,这可能不是您想要做的
正如@abarnert所指出的,您最初的SyntaxError
可能来自他提到的两点。使用@jazdev时得到的索引器
试着阅读完整的错误消息(全部),它通常会准确地告诉你问题所在-试着想想为什么这部分可能是语法错误。此外,如果你想得到某个特定错误的帮助,你必须发布完整的错误消息,而不仅仅是模糊地描述它。错误(或其他输出)是您的代码的一部分,而不仅仅是代码。另外,您使用的是什么版本的Python?您混合了Python3的print
函数和Python2的print
语句。如果您使用的是Python3,则后者将是一个SyntaxError
。如果您使用的是Python 2,它们都可以工作,但是函数样式可能会在各种情况下产生意外的结果(例如,print(1,2)
将打印元组(1,2)
,而不是打印12
)。请不要先发布重复的问题,您已经被警告过这一点…替换线索如何?告诉我您得到的确切错误。对于fw_行,fs_行in(fw,fs):ValueError:太多值无法解包(预期为2)提供更多上下文。什么是fw,fs?下一步是什么?顺便说一句,你的语法是错误的。对不起,错误,我得到的错误是。。。(key,val)=填充[1],填充[0]索引器:列表索引超出范围