簡體   English   中英

如何在正則表達式中匹配單詞-python

[英]How to match word in regex -python

當我在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]代替

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM