Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python文件读取_Python - Fatal编程技术网

从python文件读取

从python文件读取,python,Python,我有一个文本文件,它的格式中有一些反义词: 能| |不能 无法| |能够 远轴| |近轴 近轴| |远轴 我需要检查这个词是否是另一个词的反义词 我所做的是这样一个代码: def antonyms(): f = open('antonyms.txt', 'r+') for line in f: a = line.split('||') x = a[0] y = a[1] return x, y 但我得到的只是最后几对,然后

我有一个文本文件,它的格式中有一些反义词:

能| |不能
无法| |能够
远轴| |近轴
近轴| |远轴

我需要检查这个词是否是另一个词的反义词

我所做的是这样一个代码:

def antonyms():
    f = open('antonyms.txt', 'r+')
    for line in f:
        a = line.split('||')
        x = a[0]
        y = a[1]
    return x, y
但我得到的只是最后几对,然后我尝试缩进返回一点,所以我这样做了

def antonyms():
    f = open('antonym_adjectives.txt', 'r+')
    for line in f:
        a = line.split('||')
        x = a[0]
        y = a[1]
        return x, y
但我还是只拿到了第一双

我怎样才能买到所有的鞋子

我该怎么做呢

>>> antonyms(x, y)

告诉我他们是真是假

您的问题是使用
return
您将退出函数

相反,在
x=a[0]
y=a[1]
中,将这些值附加到数组中,并返回该数组

the_array = []
for line in f:
    a = line.split('||')
    the_array.append((a[0],a[1]))
return the_array

您的问题是,使用
return
将退出函数

相反,在
x=a[0]
y=a[1]
中,将这些值附加到数组中,并返回该数组

the_array = []
for line in f:
    a = line.split('||')
    the_array.append((a[0],a[1]))
return the_array
你可以使用收益率:

def antonyms():
    f = open('antonyms.txt', 'r+')
    for line in f:
        a = line.split('||')
        x = a[0]
        y = a[1]
        yield x, y

for a,b in antonyms():
     # rest of code here
顺便说一下,您可以直接指定给x和y:

x,y = line.split('||')
简单检查A和b是否为反义词可以是:

(a == 'un' + b) or (b == 'un' + a)
你可以使用收益率:

def antonyms():
    f = open('antonyms.txt', 'r+')
    for line in f:
        a = line.split('||')
        x = a[0]
        y = a[1]
        yield x, y

for a,b in antonyms():
     # rest of code here
顺便说一下,您可以直接指定给x和y:

x,y = line.split('||')
简单检查A和b是否为反义词可以是:

(a == 'un' + b) or (b == 'un' + a)

编写一个函数来获取给定单词的反义词更有意义:

def antonym(word):
    with open('antonym_adjectives.txt', 'r+') as f:
        for line in f:
            a, b = line.split('||')
            a = a.strip()
            b = b.strip()
            if a == word:
                return b
            if b == word:
                return a
然后,您可以编写
反义词(x)=y
,以检查
x
y
是否为反义词。(然而,这假设每个单词都有一个唯一的反义词)

每次都从开头读取文件。如果反义词列表的大小可以管理,那么将其作为数组或字典读入内存可能更有意义

如果你不能假设每个单词都有一个唯一的反义词,你可以把它转换成一个生成器,返回给定单词的所有反义词

def antonym(word):
    with open('antonym_adjectives.txt', 'r+') as f:
        for line in f:
            a, b = line.split('||')
            a = a.strip()
            b = b.strip()
            if a == word:
                yield b
            if b == word:
                yield a

然后反义词(x)中的
y
将告诉您
x
y
是否是反义词,
list(antonyms(x))
将为您提供
x

的所有反义词的列表,编写一个获取给定单词反义词的函数将更有意义:

def antonym(word):
    with open('antonym_adjectives.txt', 'r+') as f:
        for line in f:
            a, b = line.split('||')
            a = a.strip()
            b = b.strip()
            if a == word:
                return b
            if b == word:
                return a
然后,您可以编写
反义词(x)=y
,以检查
x
y
是否为反义词。(然而,这假设每个单词都有一个唯一的反义词)

每次都从开头读取文件。如果反义词列表的大小可以管理,那么将其作为数组或字典读入内存可能更有意义

如果你不能假设每个单词都有一个唯一的反义词,你可以把它转换成一个生成器,返回给定单词的所有反义词

def antonym(word):
    with open('antonym_adjectives.txt', 'r+') as f:
        for line in f:
            a, b = line.split('||')
            a = a.strip()
            b = b.strip()
            if a == word:
                yield b
            if b == word:
                yield a

然后反义词(x)中的
y将告诉您
x
y
是否为反义词,
list(antonyms(x))
将为您提供
x
的所有反义词的列表,因为没有答案回答您的两个问题:

第一:如果你回来,节目就到此为止。因此,您希望
产生
您的反义词,以便整个函数成为生成器:

def antonyms():
    f = open('antonyms.txt', 'r+')
    for line in f:
        a = line.split(' || ') # Think you also need surrounding spaces here.
        x = a[0]
        y = a[1]
        yield x, y
使用此功能检查
是否为反义词(a,b)

其他答案也有很好的提示:

例如,一个好的替代方法是:
[x,y]=line.split(“| |”)

,因为没有答案可以回答您的两个问题:

第一:如果你回来,节目就到此为止。因此,您希望
产生
您的反义词,以便整个函数成为生成器:

def antonyms():
    f = open('antonyms.txt', 'r+')
    for line in f:
        a = line.split(' || ') # Think you also need surrounding spaces here.
        x = a[0]
        y = a[1]
        yield x, y
使用此功能检查
是否为反义词(a,b)

其他答案也有很好的提示:
例如,一个好的替代方法是:
[x,y]=line.split(“| |”)
这是我的代码

def antonyms(first,second):
    f = open('text.txt', 'r')

    for line in f.readlines():
        lst = [s.strip() for s in line.split('||')]
        if lst and len(lst) == 2:
            x = lst[0]
            y = lst[1]
            if first == x and second == y:
                return True
    return False
这是我的密码

def antonyms(first,second):
    f = open('text.txt', 'r')

    for line in f.readlines():
        lst = [s.strip() for s in line.split('||')]
        if lst and len(lst) == 2:
            x = lst[0]
            y = lst[1]
            if first == x and second == y:
                return True
    return False

我认为列表不是解决这个问题的好数据结构。在将所有反义词对读入一个列表后,仍然需要搜索整个列表以查找单词的反义词。口述会更有效率

antonym = {}
with open('antonym_adjectives.txt') as infile:
    for line in infile:
       x,y = line.split('||)
       antonym[x] = y
       antonym[y] = x
现在你可以在字典里查反义词:

try:
   opposite = antonym[word]
except KeyError:
   print("%s not found" %word)

我认为列表不是解决这个问题的好数据结构。在将所有反义词对读入一个列表后,仍然需要搜索整个列表以查找单词的反义词。口述会更有效率

antonym = {}
with open('antonym_adjectives.txt') as infile:
    for line in infile:
       x,y = line.split('||)
       antonym[x] = y
       antonym[y] = x
现在你可以在字典里查反义词:

try:
   opposite = antonym[word]
except KeyError:
   print("%s not found" %word)

它给了我今天早上的第一双one@user3633694不可能的。刚刚测试过。检查返回的位置,缩进在Python中非常重要:)for
return
必须处于同一级别。对不起,你是对的,可能是查找返回的问题,我又做了一次,它工作了。非常感谢,回答很好,很容易理解。投票结果某些单词如下('unmalted'、'malted\n')、('posed'、'unposed\n')、('unposed'、'posed\n')、('sa皂化'、'unsa皂化'、'unsa皂化')、('unsa皂化'、\n')、('unsa皂化')、('unsa皂化')、('unsa皂化')\n您认为为什么会有?@user3633694“\n”是可以跳转到文件中下一行的字符。例如,您可以使用
rstrip
删除它们,或者如果您不只是
打印_数组
而是对_数组中的pair执行类似于
的操作:打印pair[0],pair[1]
,它们将不会显示。它在本周给了我第一对one@user3633694不可能的。刚刚测试过。检查返回的位置,缩进在Python中非常重要:)for
return
必须处于同一级别。对不起,你是对的,可能是查找返回的问题,我又做了一次,它工作了。非常感谢,回答很好,很容易理解。投票结果某些单词如下('unmalted'、'malted\n')、('posed'、'unposed\n')、('unposed'、'posed\n')、('sa皂化'、'unsa皂化'、'unsa皂化')、('unsa皂化'、\n')、('unsa皂化')、('unsa皂化')、('unsa皂化')\n您认为为什么会有?@user3633694“\n”是可以跳转到文件中下一行的字符。您可以使用例如
rstrip
,或者如果需要,将其删除