从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
,或者如果需要,将其删除