尝试使用 Python 脚本将字符串添加到文件



我有一本西班牙语小说,在一个纯文本文件中,我想制作一个Python脚本,将翻译放在困难单词后面的括号中。我有一个单词列表(带翻译),我想在一个单独的文本文件中执行此操作,我试图正确格式化该文件。我已经忘记了我对Python的了解,一开始我很少,所以我在挣扎。这是有人帮助我的脚本:

bookin = (open("C:UsersKing KongDocuments_div_tekstfiler_coc_es.txt")).read() 
subin = open("C:UsersKing KongDocuments_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:Python27translscript_secver.py", line 4, in <module>
ogword, meaning = line.split()
ValueError: too many values to unpack

小说很大,我做的字典大约有一万个键值对。

这是否意味着字典有问题?还是太大了?一直在研究这个问题,但我似乎无法理解它。任何建议将不胜感激。

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

mylist = line.split()
assert len(mylist) == 2
ogword, meaning = line.split()[:2]

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

如果您的词典包含比同义词更丰富的定义,则可以使用以下行,将第一个单词放在 ogword 中,将后面的单词放在含义中。

words =  line.split()
ogword, meaning = words[0], " ".join(words[1:])

如果你的字典语法更复杂(组合 ogword),你必须依赖显式分隔符。您仍然可以使用 split 来分隔行(line.split("=")会在"="字符上拆分一行)

编辑:要忽略和显示坏行,请ogword, meaning = line.split()替换为

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

返回单个列表,即一个项目,您正在尝试将这一件事分配给两个变量。

如果列表中的项目数等于赋值语句左侧的变量数,它将起作用。 即,列表被解压缩,各个部分被分配给左侧的变量。

在这种情况下,正如 @Josvic Zammit 所指出的那样,如果列表中有超过 2 个项目并且无法正确"解压缩"和分配,则可能会出现问题。

相关内容

  • 没有找到相关文章

最新更新