我有一个包含文本的文本文件。其他是包含指定的csv文件。我想提取指定匹配的行。
import nltk
import re
import pandas as pd
with open('textfile.txt', encoding='utf16') as f:
sample = f.read()
file = pd.read_csv('designation.csv')
df = pd.DataFrame(file)
data = []
for i in range(len(df)):
des = df.loc[i]['Designations']
for line in sample.splitlines():
print(line)
des_regex = r'[a-zA-Z]'+des+r'[a-zA-Z]'
regular_expression = re.compile(des_regex, re.IGNORECASE)
regex_result = (re.search(regular_expression, line))
if regex_result:
data.append(line)
输入文字文件:
Sunder Pichai是Google的首席执行官。谷歌是美国公司 谷歌于1996年1月开始作为Larry Page和 谢尔盖布林,他们都是斯坦福大学的博士生 加利福尼亚州斯坦福。[9]
传统搜索引擎通过计算数量来对结果进行排名 一旦搜索词出现在页面上,两个理论上就是一个 更好的系统,分析网站之间的关系。[10]他们 称这种新技术为PageRank;它确定了一个网站 页数的相关性以及这些页面的重要性 链接回原始网站。[11] [12]
Page和布林最初昵称他们的新搜索引擎" BackRub", 因为系统检查反向链接以估计a的重要性 位点。[13] [14] [15]最终,他们将名称更改为Google;该 搜索引擎的名称源自拼写错误的单词 " googol",[16] [17]数字1后跟100个零,被选中 表示搜索引擎旨在提供大量 大量信息。[18]最初,谷歌在斯坦福大学管理 大学的网站,域名为google.stanford.edu [19]和 z.stanford.edu。[20]
输入包含名称的csv文件:
CEO,
CTO,
COO
我想输出如下:
Sunder Pichai is the CEO of Google
答案 0 :(得分:0)
看起来就像你想把文件分成句子而不是行。以下代码同时支持两者,如果您要分割成行而不是文件,只需将f.read().split('.')
替换为f.read().splitlines()
split
将您的文件改为句子:
with open('f1.txt') as f:
data = f.read().split('.')
any
和 in
搜索每个句子
searches = ['CEO', 'CTO', 'COO']
for sentence in data:
if any(i in sentence for i in searches):
print(sentence)
# Result for your sample input file
Sunder Pichai is the CEO of Google
这确实有一些限制,例如:
之类的句子博士。奇怪的是谷歌的首席执行官
谷歌公司首席执行官杰瑞德
无法正确阅读,但希望这可以帮助您入门。