gpt4 book ai didi

python - 正则表达式加减号,以及字母?

转载 作者:行者123 更新时间:2023-12-04 08:43:00 26 4
gpt4 key购买 nike

我正在尝试使用 re 编写一个 Python 函数库,本质上是试图提取括号内的单词。这些单词包含字母,有些单词包含加号或减号(但不是全部)。这是我到目前为止的功能:

def processArray(array):
newArray = []
for i in array:
m = re.search(r"\[([A-Za-z0-9\-\+]+)\]", i).groups()[0]
newArray.append(m)

return newArray
array传入的参数是 [['Preconditions [+Here]\n'], ['Preconditions [+Is', '+The]\n'], ['Preconditions [-Example]\n']] . newArray我希望获得的是 ['+Here', '-Is', '+The', '-Example'] .使用我当前的功能,这是抛出的错误:
  File "file.py", line 71, in <module>
preconditions = processArray(preconditions)
File "file.py", line 29, in processArray
m = re.search(r"\[([A-Za-z0-9\-\+]+)\]", i).groups()[0]
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/re.py", line 183, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
谁能解释为什么会发生此错误以及我可以做些什么来解决它?

最佳答案

您可以遍历列表中的列表并加入所有内部列表并使用以下修复:

import re

def processArray(array):
newArray = []
for l in array:
m = re.findall(r"[A-Za-z0-9+-]+(?=[^][]*])", " ".join(l))
if m:
newArray.extend(m)
return newArray

print(processArray([['Preconditions [+Here]\n'], ['Preconditions [+Is', '+The]\n'], ['Preconditions [-Example]\n']]))
# => ['+Here', '+Is', '+The', '-Example']
Python demo .
正则表达式是 [A-Za-z0-9+-]+(?=[^][]*]) ,这是匹配一个或多个字母数字或 - 的解决方法/ +仅当后跟 0+ 个字符而不是 [ 时才为字符和 ]高达 ] .它不检查打开 [ .如果有必要,您将不得不运行两个正则表达式操作:
def processArray(array):
newArray = []
for l in array:
m = re.findall(r"\[(.*?)]", " ".join(l))
for n in m:
k = re.findall(r'[A-Za-z0-9+-]+', n)
if k:
newArray.extend(k)
return newArray
this Python demo ,首先提取括号之间的字符串,然后提取其中的必要匹配项。

关于python - 正则表达式加减号,以及字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64471705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com