使用regex返回方括号中的第一个单词

2024-05-28 20:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件

[[ abstraction, verb.cognition:abstract,+ ]] 

我想去掉方括号并保留这个括号中的abstraction这个词。所以输出应该是-

abstraction

我试过-

import re

with open('test.txt','r') as f:
    for line in f:
        rx = re.compile(r'\[[^][]*]')  string
        while rx.search(line):
            line = rx.sub('',line)                     
            s = line.strip()
            print(s)

它只显示[]正方形括号。是有办法吗?请帮忙。你知道吗


Tags: 文件testimportretxtabstractwithline
3条回答

使用re.search

例如:

s = "[[ abstraction, verb.cognition:abstract,+ ]]"
m = re.search("\[\[(.*?)\,.*", s)
if m:
    print(m.group(1))

输出:

 abstraction

你也可以试试这个

line="""[[ abstraction, verb.cognition:abstract,+ ]] rewq [[ abs, verb.cognition:abstract,+ ]] fdsaf [[ abstraction, verb.cfdsa,+ ]] """
rx = re.compile(r'\[\[[^][]*]]')
line = rx.sub(lambda m: '' if m.group(0).find("abstraction")== -1 else "abstraction", line)                     
s = line.strip()
print(s)

输出为

abstraction rewq  fdsaf abstraction

你甚至不需要担心括号,如果你的文件只包含那个,你只需要匹配第一个单词。你知道吗

import re
t = "[[ abstraction, verb.cognition:abstract,+ ]] "

match = re.search(r"\b([^,]+)\b", t)
# prints False when no match is found
print(match is not None and match.group(0))
# abstraction

相关问题 更多 >

    热门问题