如何在regex-python中匹配单词
如何匹配列表中的单词,当我在与如何在regex-python中匹配单词,python,regex,python-2.7,Python,Regex,Python 2.7,如何匹配列表中的单词,当我在与\w+的匹配中使用demo时,但当我在代码中输入单词时未检测到,因此这是我的代码: 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]
\w+
的匹配中使用demo时,但当我在代码中输入单词时未检测到,因此这是我的代码:
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
这是我想与regex匹配的词:
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
未检测到单词的fitur[0]仅F37-F11如何修复regex?试试
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]
只是旁注。这将更容易维护
这是因为re.findall('\w+',fitur[0])正在返回一个列表['action']
试着用re.findall('\w+',fitur[0])[0]来代替你的预期输出是什么?我已经用
更新了@RakeshTry这个问题,如果fitur[0]在…
中,它会使代码更可读。但是在列表的末尾,我发现了这个\n
,['F37',0',1',1',1',0',2\n'
这是什么意思?是这样吗@Rakeshand为什么如果我用'A-Za-z'更改正则表达式,我会得到索引器:列表索引超出范围
实际上我只想要这个词。我忘了正则表达式是否与字母和数字匹配。但是只使用字母表@Rakesh有多少钱你试过[A-za-z]+
?哦,很抱歉,我忘了这个东西)
非常感谢@Rakesh
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