Python:从阵列中匹配字符串与另一个阵列中文本的子字符串

目前,我正在使用Pythons BeautifulSoup Library来检索报纸文章的网页。这些文章存储在对象“细节”中。Python:从阵列中匹配字符串与另一个阵列中文本的子字符串

然后我有几个存储在对象“行”中的各种街道名称。现在我想搜索“行”中包含的街道名称的文章。

如果其中一个街道名称是其中一篇文章的一部分,我想在数组中保护街道名称。

如果没有匹配项目(所选文章不包含任何街道名称),那么数组中应该有一个空元素。例如,假设对象“线”由(“Abbey Road”,“St-John's Bridge”,“West Lane”,“Sunpoint”,“East End”)组成。

对象“细节”由4篇文章组成,其中2篇包含“Abbey Road”和“West Lane”(例如“Abbey Road车祸,三人受伤”)。其他两篇文章不包含任何来自“行”的名称。

那么结果匹配应该是这样的一个阵列中后: [] [“艾比路”] [] [“西一巷”]

我也被告知要使用矢量对于这一点,因为我原来的数据样本相当大。不过,我对字符串操作使用矢量化并不熟悉。有没有人与此合作?

我的代码目前看起来是这样的,但是这仅返回“-1”作为我得到的数组的元素:

from bs4 import BeautifulSoup 

import requests

import io

import re

import string

import numpy as np

my_list = []

for y in range (0, 2):

y *= 27

i = str(y)

my_list.append('http://www.presseportal.de/blaulicht/suche.htx?q=' + 'einbruch' + '&start=' + i)

for link in my_list:

# print (link)

r = requests.get(link)

r.encoding = 'utf-8'

soup = BeautifulSoup(r.content, 'html.parser')

with open('a4.txt', encoding='utf8') as f:

lines = f.readlines()

lines = [w.replace('\n', '') for w in lines]

details = soup.find_all(class_='news-bodycopy')

for class_element in details:

details = class_element.get_text()

sdetails = ''.join(details)

slines = ''.join(lines)

i = str.find(sdetails, slines[1 : 38506])

print(i)

如果有人想复制我的实验,网站,链接在上面的代码并且对象“细节”中的文章的抓取和存储工作正常,因此代码可以被复制。

中的.txt文件对我原来的数据为对象的“线”可以在这个Dropbox的,文件夹进行访问: https://www.dropbox.com/s/o0cjk1o2ej8nogq/a4.txt?dl=0

非常感谢任何提示我怎样才能使这项工作,最好是通过矢量。

回答:

你可以尝试这样的事:

my_list = [] 

for y in range (0, 2):

i = str(y)

my_list.append('http://www.presseportal.de/blaulicht/suche.htx?q=einbruch&start=' + i)

for link in my_list:

r = requests.get(link)

soup = BeautifulSoup(r.content.decode('utf-8','ignore'), 'html.parser')

details = soup.find_all(class_='news-bodycopy')

f = open('a4.txt')

lines = [line.rstrip('\r\n') for line in f]

result = []

for i in range(len(details)):

found_in_line = 0

for j in range(len(lines)):

try:

if details[i].get_text().index(lines[j].decode('utf-8','ignore')) is not None:

result.append(lines[j])

found_in_line = found_in_line + 1

except:

if (j == len(lines)-1) and (found_in_line == 0):

result.append(" ")

print result

以上是 Python:从阵列中匹配字符串与另一个阵列中文本的子字符串 的全部内容, 来源链接: utcz.com/qa/266025.html

回到顶部