通过匹配文本文件

时间:2018-05-21 12:58:08

标签: python

我有一个包含文本的文本文件。其他是包含指定的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

1 个答案:

答案 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

这确实有一些限制,例如:

之类的句子
  

博士。奇怪的是谷歌的首席执行官

     

谷歌公司首席执行官杰瑞德

无法正确阅读,但希望这可以帮助您入门。