标签: string-matching

在 R 中,如何搜索特定字符串中包含的字符向量元素?

我在 R 中有一个字符向量元素,类似于:

[1] Deer  giraffe  hippopotamus lion       
Run Code Online (Sandbox Code Playgroud)

和一个字符串,例如

a <- "ogiraffeps"
Run Code Online (Sandbox Code Playgroud)

如何找到字符向量中包含字符串中模式的元素的索引?我希望能够在不循环字符向量的情况下执行此操作

我是 R 新手,但grep似乎无法处理这个问题,因为它总是使用单个字符串(模式)来查看它是否包含在字符向量中。但是,我想要做的是找到字符串中包含的字符向量的元素。

string r vector string-matching

3
推荐指数
1
解决办法
1万
查看次数

如何在整个 Pandas 数据框中搜索字符串并获取包含该字符串的列的名称?

我想在包含给定字符串的数据帧(“类别”)中查找列的名称。

categories

    Groceries   Electricity Fastfood    Parking 
0   SHOP        ELCOMPANY   MCDONALDS   park
1   MARKET      ELECT       Subway      car
2   market      electr      Restauran   247 
Run Code Online (Sandbox Code Playgroud)

假设我想在整个数据帧中搜索字符串“MCDO”。答案应该是“快餐”。我尝试使用 str.contains 但它似乎不适用于数据帧。

我怎样才能实现这个目标?谢谢。

python contains string-matching dataframe pandas

3
推荐指数
1
解决办法
6278
查看次数

在 Python 中使用正则表达式提取精确的单词或字符集

假设我有一个这样的列表。

List = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209']. 
Run Code Online (Sandbox Code Playgroud)

我想搜索并返回包含“PO”的匹配项。从技术上讲,我应该有RUC_PO-345作为我的输出,但即使RUC_POLO-209是作为输出与RUC_PO-345.

python regex filter string-matching

3
推荐指数
1
解决办法
3999
查看次数

Perl 中多个模式的字符串匹配

我有一个字符串,当我用变量检查它时,它没有给我预期的结果。通过使用模式匹配机制,它工作正常。

这是 Perl 中的预期行为吗?如果没有,如何在不使用模式匹配的情况下解决此问题。

代码如下:

#!/usr/bin/perl

use strict; 
use warnings;

my $day_of_week = "Monday";

if (($day_of_week ne "Monday") or ($day_of_week ne "Tuesday")){
    print "In If. Today is $day_of_week.\n";
} else {
    print "In else part\n";
}
Run Code Online (Sandbox Code Playgroud)

这应该给出输出:

In else part
Run Code Online (Sandbox Code Playgroud)

但它给了我:

In If. Today is Monday.
Run Code Online (Sandbox Code Playgroud)

当我if使用如下模式匹配更改条件时,它工作正常。

if ($day_of_week !~ /Monday|Tuesday) {
Run Code Online (Sandbox Code Playgroud)

我担心的是为什么字符串匹配不能按条件工作。我在这里做错了什么。

perl if-statement string-matching

3
推荐指数
1
解决办法
73
查看次数

如何找到从 s1 到 s2 的最小可能周期偏移?

亲爱的 StackOverflowers,

我是算法的新手,我正在为以下问题苦苦挣扎:如果我有 2 个字符串s1s2,其中s2s1. 它需要找到从s1到的最小可能循环偏移s2

让我举个例子:

s1 = 'I love cookies '

s2 = 'cookies I love ' 答案在这里7

最好采用线性时间。有我失败的试验:

def find_minimum_cyclic_shift(s1, s2):

        if len(s1) != len(s2):
            return -1

        index = s2.index(s1[0])
        if (index > -1):
            if (s1==s2):
                return 0;

            #finalPosition = len(s2) - index
            #print(finalPosition, " index=",index)
            #return s2[0] == s1[finalPosition] and s1[finalPosition::]==s2[0:index]
        return index
Run Code Online (Sandbox Code Playgroud)

但它不适用于以下情况:absabsabsfabsfabsabs。而不是 4 我有 0. 因为 …

python string algorithm string-matching

3
推荐指数
1
解决办法
161
查看次数

返回基于向量中相似(不相同)元素的数据框子集?

我有一个数据框(dim 2914 x 6),其中一列是动物组和物种缩写的向量,例如“bird_F.pw”,并且我有一个包含几个物种缩写的单独向量,例如“F.pw”。我试图提取数据框中动物组和物种缩写与缩写相似的所有数据行(即,我不知道前缀)。我想使用 %in% 和 %like% 等运算符,但我无法找到生成不相同匹配的方法。

这是一个示例数据框:

df<-cbind(
c("A","B","C","D","E"),
c(1:5),
c("insect_F.vp","bird_L.ts","insect_P.qr","insect_V.cl","bird_H.dw"))
colnames(df) <- c("season","survey_id","pollinator")
Run Code Online (Sandbox Code Playgroud)

这是我想在该数据框中搜索的缩写向量:

abbrevs <- c("L.ts","P.qr","H.dw")
Run Code Online (Sandbox Code Playgroud)

我的预期结果是:

output <- cbind(c("B","C","E"),c(2:3,5),c("bird_L.ts","insect_P.qr","bird_H.dw"))
colnames(output) <- colnames(df)
Run Code Online (Sandbox Code Playgroud)

r string-matching

3
推荐指数
1
解决办法
35
查看次数

为什么我的代码会停止?

嘿我遇到了一个问题,我的程序停止在57802记录中迭代文件由于某些原因我无法弄清楚.我放了一个心跳部分,所以我可以看到它在哪条线上并且它有所帮助,但现在我被困在为什么它停在这里.我认为这是一个内存问题,但我只是在我的6GB内存计算机上运行它仍然停止.

有没有更好的方法来做我在下面做的任何事情?我的目标是读取文件(如果您需要我发送给您,我可以15MB文本日志)根据正则表达式找到匹配并打印匹配行.还有更多,但就我而言.我正在使用python 2.6

任何想法也会帮助和编码评论!我是一个python noob,我还在学习.

import sys, os, os.path, operator
import re, time, fileinput

infile = os.path.join("C:\\","Python26","Scripts","stdout.log")

start = time.clock()

filename  = open(infile,"r")

match = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),\d{3} +\w+ +\[([\w.]+)\] ((\w+).?)+:\d+ - (\w+)_SEARCH:(.+)')

count = 0
heartbeat = 0
for line in filename:
    heartbeat = heartbeat + 1
    print heartbeat
    lookup = match.search(line)
    if lookup:
        count = count + 1
        print line
end = time.clock()
elapsed = end-start
print "Finished processing at:",elapsed,"secs. Count of records =",count,"."

filename.close()
Run Code Online (Sandbox Code Playgroud)

这是第57802行,它失败了:

2010-08-06 08:15:15,390 DEBUG …
Run Code Online (Sandbox Code Playgroud)

python regex string-matching

2
推荐指数
1
解决办法
294
查看次数

正则表达式不匹配

为什么这个正则表达式:

[^\s]+  
Run Code Online (Sandbox Code Playgroud)

...说这个字符串:

"用户的扩展"

不完全匹配?

regex whitespace string-matching

2
推荐指数
1
解决办法
522
查看次数

SSIS左合并加入部分匹配

在SSIS中,当我尝试在"CourseName"上对表1和表2进行合并连接时,结果显示只映射了部分列.也就是说,即使这两个表中的值具有相同的数据类型并且具有相同的"Coursename",它们在SSIS中的左合并连接中也被视为"不匹配".有人可以帮帮我吗?

PS

  1. 两列的数据类型都是nvarchar(30)
  2. 查找也不起作用......

merge ssis left-join string-matching

2
推荐指数
1
解决办法
3022
查看次数

创建关键字过滤器的最快方法?

我正在尝试基于关键字过滤器过滤推文。该过滤器可能包含10个单词或更多。因此,如果一条推文包含关键字,就会通过。我唯一能想到的就是将推文的文本拆分为令牌。然后,我将遍历过滤器单词,并将每个标记与过滤器中的每个单词进行比较。但是这种方式似乎很慢。假设关键字过滤器有N个关键字,令牌数为M,则其需求为O(N * M)。

有没有更好的方法?

java algorithm string-matching

2
推荐指数
1
解决办法
1440
查看次数