首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mathematica -从字符串搜索中排除字符串

Mathematica -从字符串搜索中排除字符串
EN

Stack Overflow用户
提问于 2011-07-07 06:00:55
回答 2查看 370关注 0票数 0

我正在尝试选择表格中出现频率最高的关键字。我需要搜索列表中不包括给定的第二个、第三个、第四个等单词的单词的出现次数。

例如,我需要搜索单词"lollypop“在不包括单词"candy”的列表中出现的次数。

这段代码将返回单词"lollypop“出现的次数:

代码语言:javascript
运行
复制
rt = Parallelize@
 Cases[MemoizeTable["Candy_table.txt"], 
  x_List /; 
   MemberQ[x, 
    s_String /; 
     StringMatchQ[s, ("*lollypop*"), IgnoreCase -> True]], {1}];

我试着添加StringFreeQ来排除“StringFreeQ”,我试着添加Nor,在字符串搜索中添加Or,但是我不确定怎么做/放在哪里/它们..?

基本上,我需要一个"this" BUT NOT "that"代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-07 06:19:43

代码语言:javascript
运行
复制
excludeList = {"candy", "other"};
toCount = "lollypop";

numberOfToCount[list_, tocount_, excludeList_] := 
  If[And @@ ((! MemberQ[list, #]) & /@ excludeList), 
     Count[list, tocount], 
     "Excluded"];

用法:

代码语言:javascript
运行
复制
numberOfToCount[{"lollypop", "lollypop", "the beatles"}, toCount, excludeList]
numberOfToCount[{"lollypop", "lollypop", "candy"}, toCount, excludeList]

(*
-> 2
-> Excluded
*)
票数 2
EN

Stack Overflow用户

发布于 2011-07-07 06:11:34

要获取单词,请尝试例如

代码语言:javascript
运行
复制
dl = DictionaryLookup[];

Select[dl, 
 StringFreeQ[#, ___ ~~ "ies" ~~ ___] && 
 StringMatchQ[#, ___ ~~ "loll" ~~ ___] &]
 (*
 -> {"loll", "lolled", "lolling", "lollipop", "lollipops", "lollop", "lolloped", "lolloping", "lollops", "lolls", "lolly"}
 *)

您可以通过在末尾添加//Count来计算它们(比如)。

编辑:似乎我误解了你的问题。如果您要问的是:计算"canapes“在列表中出现的次数,该列表不包括”可修改“,那么:

代码语言:javascript
运行
复制
dl2 = {"titivation", "curving", "doppelgangers", "objurgations", 
"canapes", "invaluable", "modifiable", "dissect", "ominousness", 
"sentinel"}

If[Not@MemberQ[dl2, "modifiable"], Count[dl2, "canapes"], False]
(*
-> False
*)

代码语言:javascript
运行
复制
If[Not@MemberQ[dl2, "plate"], Count[dl2, "canapes"], False]

不包括"plate",因此此列表的值为1。

但是我被你的评论弄糊涂了(“这段代码返回的是我正在运行其他搜索的列表的初步选择,所以我需要保持列表的完整性”哪个列表?它们都被上面的代码原封不动地保存着),所以我肯定还是遗漏了什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6603601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档