-3

我想要的很简单,但同时又很复杂

import re

list1 = ['developer 1', 'bot_add 1', 'sv_gravity 1000']
line = 'sv_gravity 800'

r = re.compile(line)
newlist = list(filter(r.match, list1))
separator  = ''
line = (separator.join(newlist))
print(line)

因此,如果 line 变量在 list1 中有匹配项,我想更改他的值

所以线应该是:line = sv_gravity 1000

但输出什么都没有,一个空格

如果我只更改“sv_gravity”的行值,输出将是“sv_gravity 1000”,我想要什么。

4

2 回答 2

1

您可能希望使用列表推导变得更简单:

line = [i for i in list1 if line.split()[0] in i][0]

我假设您只想进行比较'sv_gravity',因此无论您是否拥有'sv_gravity''sv_gravity 1000'. 它只是比较起始单词(直到遇到空格)是否在列表中。

于 2019-08-12T19:31:30.733 回答
0
   from difflib import get_close_matches 

   def closeMatches(patterns, word): 
        print(get_close_matches(word, patterns)) 

   closeMatches(patterns=list1, word=line)

您可以使用上面的代码来获得您想要的结果。在您的代码中,因为 'sv_gravity 800' 被视为一个字符串,因此它没有在列表中找到匹配项。即使您尝试“sv_gravity”,它也会给您空列表。

于 2019-08-12T19:28:33.350 回答