Python匹配关键字的列值,删除正则表达式后的文本

2024-05-23 21:49:05 发布

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

我想要的例子是:

import re
name = 'abc' # keywords
text = '''abc,abc。fghj''' # text
results = re.findall(r'[^。]*?{}[^。]*?。'.format(name), text)
for i, r in enumerate(results, 1):
    print(i,r)

print(results)

输出:

1 abc,abc。
['abc,abc。']

但我的数据是要匹配的Excel列表:

enter image description here

我的代码如下:

import re
import pandas as pd

#read excel
ecn_excel = pd.read_excel('ECN.xls')
#data frame
ecn_data = pd.DataFrame(ecn_excel)
ecn_data = ecn_data.dropna(subset=['Attribute Values'], inplace=False)
data = ecn_data.drop('Keywords', axis=1).join(ecn_data['Keywords'].str.split('|', expand=True).stack().reset_index(level=1, drop=True).rename('Keywords'))

#match value
match = str(ecn_data['Attribute Values'])
keywords = str(data['Keywords'])

#results = re.findall(r'[^。]*?{}[^。]*?。'.format(data['Keywords'], ecn_data['Attribute Values'])
results = re.findall(r'[^。]*?{}[^。]*?。'.format(keywords), match)
for i, r in enumerate(results, 1):
    print(i,r)

当然,这段代码不起作用,因为我不知道如何修改它,使之成为一个匹配的excel列表


Tags: textimportreformatdataattributeexcelresults