如何在正则表达式 -python 中匹配单词



当我在 demo 中使用 demo 时如何匹配列表中的单词 https://regex101.com/它与w+匹配,但是当我投入代码时,没有检测到单词,所以这是我的代码:

def MultiTrain(self):    
for fitur in self.fiturs:
if (fitur[0] == 'F7') or (fitur[0] == 'F8') or (fitur[0] == 'F9') or (fitur[0] == 'F10') or (
fitur[0] == 'F13') or (fitur[0] == 'F14') or (fitur[0] == 'F15') or (fitur[0] == 'F16') or (
fitur[0] == 'F17') or (fitur[0] == 'F23') or (fitur[0] == 'F24') or (fitur[0] == 'F25') or (
fitur[0] == 'F26') or (fitur[0] == 'F27') or (fitur[0] == 'F28') or (fitur[0] == 'F29') or (
fitur[0] == 'F30') or (fitur[0] == 'F37') or (fitur[0] == re.findall('w+', fitur[0])) :
print fitur

这就是我想与正则表达式匹配的词:

F37,0,1,0,1,1,1,0,1,0,2
F7,0,0,0,0,0,0,1,0,1,0
F11,0,0,1,0,0,1,0,0,0,0
angkasa,1,0,1,0,0,0,0,0,0,0
action,0,1,0,0,0,0,0,0,0,0
acu,0,0,0,0,1,0,0,0,0,0
ampun,0,0,0,0,0,0,0,1,0,0

程序的输出为:

F37,0,1,0,1,1,1,0,1,0,2
F7,0,0,0,0,0,0,1,0,1,0
F11,0,0,1,0,0,1,0,0,0,0

但我的期望是:

F37,0,1,0,1,1,1,0,1,0,2
F7,0,0,0,0,0,0,1,0,1,0
F11,0,0,1,0,0,1,0,0,0,0
angkasa,1,0,1,0,0,0,0,0,0,0
action,0,1,0,0,0,0,0,0,0,0
acu,0,0,0,0,1,0,0,0,0,0
ampun,0,0,0,0,0,0,0,1,0,0

仅检测到F37-F11 的单词 fitur[0] 如何修复正则表达式?

尝试。

import re
with open(filename, "r") as infile:
for fitur in infile.readlines():
fitur = fitur.split(',')
if (fitur[0] == 'F7') or (fitur[0] == 'F8') or (fitur[0] == 'F9') or (fitur[0] == 'F10') or (
fitur[0] == 'F13') or (fitur[0] == 'F14') or (fitur[0] == 'F15') or (fitur[0] == 'F16') or (
fitur[0] == 'F17') or (fitur[0] == 'F23') or (fitur[0] == 'F24') or (fitur[0] == 'F25') or (
fitur[0] == 'F26') or (fitur[0] == 'F27') or (fitur[0] == 'F28') or (fitur[0] == 'F29') or (
fitur[0] == 'F30') or (fitur[0] == 'F37') or (fitur[0] == re.findall('w+', fitur[0])[0]):
print fitur

re.findall('w+', fitur[0])返回一个列表。尝试使用索引访问第一个元素。例如:re.findall('w+', fitur[0])[0]

只是一个旁注。这将更容易维护

if (fitur[0] == ['F7', 'F8', 'F9', 'F10', 'F13', 'F14', 'F23', 'F24', 'F25', 'F26', 'F27', 'F28', 'F29', 'F30', 'F37']) or (fitur[0] == re.findall('w+', fitur[0])[0]):
print fitur

这是因为 re.findall('\w+',fitur[0]( 返回一个列表 ['action'] 试试 re.findall('\w+',fitur[0]([0] 代替

最新更新