Python在读取文件时拉出单个字符串

时间:2016-05-16 19:06:39

标签: python string python-2.7

我是Python的新手。我正在研究一个阅读文件的例子,我已经看了一段时间,但无法弄清楚我做错了什么。我想要做的是遵循相同的逻辑,就像我从源文件中搜索一个字符串,看它是否存在于目标文件中。可以把它想象成我的源文件是字符串字典,目标文件是搜索字符串的数据文件。这似乎有效,但我现在想要做的是将每个字符串一次传递给名为diff的自定义模块以比较这些字符串。现在发生的事情是,它正在抛出结果,因为我传递的是一个字符串列表而不是一次一个。如何将一个字符串一次传递给下面的diff命令。

with open('./dic') as f:
    dictionary = f.read()

if not dictionary:
    sys.exit("Could not read dictionary data :-(")

with open('./dat') as f:
    for dataFile in (line.strip() for line in f):
        print 'dataFile: ', dataFile
        print 'dictionary: ', dictionary
        score=diff.dataL(dataFile, dictionary)
        print 'Diff score: ', score

例如我的输出看起来像这样 - 你可以看到它每次为字典而不是1传递3个项目。

dataFile:  aaaa
dictionary:  aaaa
bbbb
cccc

dataFile:  test test
dictionary:  aaaa
bbbb
cccc

dataFile:  fail fail
dictionary:  aaaa
bbbb
cccc

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的变量字典实际上是一个字符串,因此从技术上讲它是一个项目。如果你想把它作为一个列表,例如迭代,你可以这样做:

dictionary_list = dictionary.split()

这将使每个字符串由String字典中的空格分隔成列表dictionary_list中的项。

答案 1 :(得分:0)

对于这一行:

SELECT Name, (Population - (SELECT AVG(Population) FROM country)) as 'OverAverage'
FROM country
WHERE Population > (SELECT AVG(Population) FROM country)

您想使用返回列表中所有行的readlines method

不是返回字符串

中所有文件内容的read method