正在尝试使用Python脚本向文件中添加字符串

正在尝试使用Python脚本向文件中添加字符串,python,file-manipulation,Python,File Manipulation,我有一本西班牙语小说,在一个普通的文本文件中,我想制作一个Python脚本,在困难的单词后面加上括号。我有一个单词列表(带翻译),我想在一个单独的文本文件中使用它,我已经试着正确格式化了。 我已经忘记了我所知道的关于Python的一切,这在一开始是非常少的,所以我正在努力。 这是有人帮我写的剧本: bookin = (open("C:\Users\King Kong\Documents\_div_tekstfiler_\coc_es.txt")).read() subin = open("C:

我有一本西班牙语小说,在一个普通的文本文件中,我想制作一个Python脚本,在困难的单词后面加上括号。我有一个单词列表(带翻译),我想在一个单独的文本文件中使用它,我已经试着正确格式化了。 我已经忘记了我所知道的关于Python的一切,这在一开始是非常少的,所以我正在努力。 这是有人帮我写的剧本:

bookin = (open("C:\Users\King Kong\Documents\_div_tekstfiler_\coc_es.txt")).read() 
subin = open("C:\Users\King Kong\Documents\_div_tekstfiler_\cocdict.txt")
for line in subin.readlines():
    ogword, meaning = line.split()
    subword = ogword + " ("  + meaning + ")"
    bookin.replace(ogword, subword)
    ogword = ogword.capitalize()
    subword = ogword + " ("  + meaning + ")"
    bookin.replace(ogword, subword)
subin.close()
bookout = open("fileout.txt", "w")
bookout.write(bookin)
bookout.close()
当我运行此操作时,收到以下错误消息:

Traceback (most recent call last):
File "C:\Python27\translscript_secver.py", line 4, in <module>
ogword, meaning = line.split()
ValueError: too many values to unpack
回溯(最近一次呼叫最后一次):
文件“C:\Python27\translscript\u secver.py”,第4行,在
ogword,意为line.split()
ValueError:要解压缩的值太多
这本小说相当大,我制作的字典由大约一万个键值对组成

这是否意味着这本词典有问题?还是太大了? 我一直在研究这个问题,但我似乎不明白。任何建议都将不胜感激。

line.split()
ogword中,意思是=line.split()
返回a,在这种情况下,它可能返回2个以上的值。以可以处理两个以上值的方式编写代码。例如,将
line.split()
分配给一个列表,然后断言该列表有两项:

mylist = line.split()
assert len(mylist) == 2
返回一个列表,即一项,您试图将这一项分配给两个变量

如果列表中的项目数等于赋值语句左侧的变量数,则该函数将起作用。也就是说,列表被解包,各个部分被分配给左侧的变量

在这种情况下,正如@Josvic Zammit所指出的,如果列表中有两个以上的项目,并且无法正确地“解包”和分配,则可能会出现问题。

line.split()
返回一个行中的单词列表(空格分隔的标记)。你得到的错误表明,在某个地方,你的词汇表包含的不仅仅是一对。您可以添加跟踪消息来定位错误(请参见下文)

如果你的词汇表包含比同义词更丰富的定义,你可以使用以下几行,将第一个单词放在单词中,后面的单词放在意义上

words =  line.split()
ogword, meaning = words[0], " ".join(words[1:])
如果字典语法更复杂(由单词组成),则必须依赖显式分隔符。您仍然可以使用“拆分”来拆分行(
line.split(“=”)
将在“=”字符上拆分一行)

编辑:若要忽略并显示错误行,请将
ogword,意为=line.split()
替换为

try:
    ogword,meaning = line.split()
except:
    print "wrong formated line:", line
    continue

如果您想忽略python引发ValueError的行,那么这种方法是有效的。
split()
返回2项时,该语句可以正常工作。啊,太酷了,我不知道。。这里的正确协议是什么,我(可以吗?)删除我的答案吗?不确定协议,但有人可能会
-1
,因为它不能正确回答问题(但从技术上讲,它不是不正确的,因为
split()
会返回列表!)@Josvic Zammit我修改了我的解释-谢谢你指出了最初的缺点。谢谢你,我会尽力理解的
words =  line.split()
ogword, meaning = words[0], " ".join(words[1:])
try:
    ogword,meaning = line.split()
except:
    print "wrong formated line:", line
    continue