首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从句子中移除一组字符串

从句子中移除一组字符串
EN

Stack Overflow用户
提问于 2014-11-16 03:23:40
回答 4查看 1.3K关注 0票数 1

我有一个句子“中国北京上海美国澳大利亚”和一组单词#{“美国”“澳大利亚”}

现在我正在写一个函数,它把输入作为句子和词集,并从句子中删除:

代码语言:javascript
运行
AI代码解释
复制
(defn remove-words-from-sentence [sentence words]
  (for [w words] (-> sentence
                     (.replaceAll w "")))

注:我想替换确切的单词发生。因此,如果单词中包含字母"a",那么所有a's都不应该在句子中被替换,只应该替换单词a。

但是上面的功能不起作用,有帮助吗??

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-16 03:46:48

你可以这样做的一种方法是把句子分成几个单独的单词,然后把单词放在一个集合中删除,然后过滤掉句子中的单词。

代码语言:javascript
运行
AI代码解释
复制
(let [sentence (clojure.string/split (read-line) #" ")
      words (set (clojure.string/split (read-line) #" "))]
  (clojure.string/join " "
                       (filter (complement words)
                               sentence)))



user=> china beijing shanghai USA australia ;;input sentence
user=> china USA ;;input words
user=> "beijing shanghai australia" ;;output

编辑:

Thumbnail提请我注意,(filter (complement pred) coll)等同于(remove pred coll)。可以通过查看remove的源代码来验证这一点。

代码语言:javascript
运行
AI代码解释
复制
(source remove)
(defn remove
  "Returns a lazy sequence of the items in coll for which
  (pred item) returns false. pred must be free of side-effects."
  {:added "1.0"
   :static true}
  [pred coll]
  (filter (complement pred) coll))
nil

所以我们可以用remove代替

代码语言:javascript
运行
AI代码解释
复制
(let [sentence (clojure.string/split (read-line) #" ")
      words (set (clojure.string/split (read-line) #" "))]
  (clojure.string/join " " (remove words sentence)))

这样就更容易读懂了。你可以把它读成“从句子中删除单词”。

票数 0
EN

Stack Overflow用户

发布于 2014-11-16 03:36:05

for在给定的seq上迭代,产生另一个序列。因此,您正在生成一个列表,其元素分别表示每个替换,而不是组合在一起。

你想要的是首先替换第一个单词,然后--根据替换的结果--删除第二个单词,以此类推。这是reduce的典型案例

代码语言:javascript
运行
AI代码解释
复制
(defn remove-words-from-sentence
  [sentence words]
  (reduce #(.replace % %2 "") sentence words))

(请注意,replacereplaceAll相同,但使用文字替换,不允许正则表达式。)

编辑:--这只是修复OP试图做的事情。如果其中一个词是"eij“(因为它将删除”北京“的那一部分),它可能会产生不想要的结果。解决这一问题的一种方法是使用(.replaceAll % (str "\\b\\Q" %2 "\\E\\b\\s*") "")进行替换;然后trim结果。因此,一个更可靠的版本可能如下所示:

代码语言:javascript
运行
AI代码解释
复制
(require '[clojure.string :as string])
(defn remove-words-from-sentence
  [sentence words]
  (let [pattern (->> (for [w words] (str "\\b\\Q" w "\\E\\b"))
                     (string/join "|")
                     (format "(%s)\\s*"))]
    (.trim (.replaceAll sentence pattern ""))))

但这完全取决于OP想要什么。

票数 0
EN

Stack Overflow用户

发布于 2014-11-20 16:18:26

代码语言:javascript
运行
AI代码解释
复制
user> (defn remove-words-from-sentence
        [sentence & words]
        (loop [sentence sentence
               ws words]
          (if-not (seq ws)
            sentence
            (recur
             (clojure.string/replace sentence (first ws) "")
             (rest ws)))))
#'user/remove-words-from-sentence
user> (remove-words-from-sentence "Hello, World" "World")
;=> "Hello, "
user> (remove-words-from-sentence "Hello, World" "ll" "o" "H")
;=> "e, Wrld"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26956377

复制
相关文章
[译]从仓库中移除敏感信息
如果你将敏感数据(如密码或 SSH 密钥)提交到 Git 仓库,你能够将其从历史记录中删除。 要从仓库的历史记录中完全删除不需要的文件,你可以使用 git filter-branch命令或 BFG Repo-Cleaner。
madneal
2022/03/11
9750
如何从 Ceph (Luminous) 集群中安全移除 OSD
工作中需要从 Ceph 的集群中移除一台存储服务器,挪作他用。Ceph 存储空间即使在移除该存储服务器后依旧够用,所以操作是可行的,但集群已经运行了很长时间,每个服务器上都存储了很多数据,在数据无损的情况下移除,看起来也不简单。
用户2443625
2018/08/27
3.1K0
如何从 Ceph (Luminous) 集群中安全移除 OSD
在 PHP 中如何移除字符串的前缀或者后缀
PHP8 引入 3 个处理字符串的方法,分别是 str_contains()、 str_starts_with()、 str_ends_with(),大家一看方法名就已经猜到这三个方法的作用了,而 WordPress 5.9 提供了这三个字符串函数的 polyfill。
Denis
2023/04/13
2.9K0
WordPress 技巧:如何从 WordPress 页面菜单中移除特定页面
从 wp_list_pages() 中生成的页面菜单中移除特定的页面是非常简单的,只需要把下面代码加入到主题的 functions.php 文件中:
Denis
2023/04/15
2K0
从 Sentence-BERT 谈句子表征
在之前那篇 NLP 表征的历史与未来[1] 里,我们几乎从头到尾都在提及句子表征,也提出过一个很重要的概念:“句子” 才是语义理解的最小单位。不过当时并没有太过深入细节,直到做到文本相似度任务时才发现早已经有人将其 BERT 化了。
NewBeeNLP
2021/11/15
1.8K0
从 Sentence-BERT 谈句子表征
翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 由于本题需要翻转句子,我们先颠倒句子中的所有字符。这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了。我们再颠倒每个单词内的字符。由于单词内的字符被翻转两次,因此顺序仍然和输入时的顺序保持一致。 还是以上面的输入为例子。翻转“I am a student.”中所有字符得到“.tn
猿人谷
2018/01/17
1.7K0
MyEclipse从目录里移除所有项目
本文最后更新于 774 天前,其中的信息可能已经有所发展或是发生改变。 1.进入工作空间 2.进入.metadata\.plugins\org.eclipse.core.resources 3.删除.projects文件夹里的所有文件 4.删除.snap结尾的文件 5.删除.safetable文件夹里的所有文件 Post Views: 353
Yuyy
2022/06/28
5820
从你的侧边栏移除 Meta
如果你浏览过一些 WordPress 博客,特别是最近新开张的,你会注意到很多人会保留来随他们选用主题而来的侧边栏中的 Meta 区域。如果你也是,那么把它删除了吧!
Denis
2023/04/14
3220
从你的侧边栏移除 Meta
Python从字符串中删除字符
Sometimes we want to remove all occurrences of a character from a string. There are two common ways to achieve this.
全栈程序员站长
2022/09/01
5.9K0
从String中移除空白字符的多种方式!?差别竟然这么大!
这一篇文章,我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中的空格。
敖丙
2020/09/22
1.8K0
从String中移除空白字符的多种方式!?差别竟然这么大!
PHP 如何从关联数组中移除并返回指定的键值对
该功能已经整合到 WPJAM Basic 插件中,并已免费提供下载,简单勾选或者设置下即可开启!
Denis
2023/04/14
5.2K0
C/C++语言连续读入一组字符串
C风格字符串应该理解成最后一个元素是‘\0’的特殊字符数组。 若使用C语言连续读入一组(多个)字符串,则面临如下问题: 1 若使用“%s”格式读入,则输入过程遇到空格、table,回车后自动终止输入,无法输入空格。 2若使用“%c”格式读入,如何连续输入多个字符串?即如何实现以回车终止输入?
用户7886150
2021/02/14
1.2K0
LeetCode 2047. 句子中的有效单词数
句子仅由小写字母('a' 到 'z')、数字('0' 到 '9')、连字符('-')、标点符号('!'、'.' 和 ',')以及空格(' ')组成。 每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ’ ’ 分隔。
Michael阿明
2022/01/07
6990
go从已知列表中查找字符串
01 May 2016 go从已知列表中查找字符串 最近在开发中遇到一个需求,需要查找某个给定的字符串是否属于有效字符串。例如以下字符串都是有效字符串: "key1" "key2" "key3" "key4" "key5" "key6" 若查找的字符串是key1,存在key1,所以key1是有效字符串,若查找的字符串是key0,不存在key0,所以key0是无效字符串。 我通过4种方式实现,分别如下: 方式一:使用map 将有效的字符串定义成map的key,
俊采
2018/05/15
2.9K0
python中字符串处理从入门到进阶
2、repr(字符串)函数输出的字符串结果中包含的单引号,将被计算在字符串的长度内。
刘金玉编程
2019/08/26
9910
WordPress 中如何批量获取一组缓存?
类似于 Memcached 等很多缓存服务都支持一次请求获取多个数据,这样意味着无须多次连接外部对象缓存服务,可以显著的提升网站的效率。
Denis
2023/04/14
4240
WordPress 中如何批量获取一组缓存?
如何在Ubuntu中完全移除Snap
我曾经写过一篇文章,解释过为什么Snap是不受欢迎的,简而言之的话,主要原因在于:
御剑
2022/11/18
16.7K0
如何在Ubuntu中完全移除Snap
PHP 中如何移除控制字符
控制字符(Control Character),或者说非打印字符,出现于特定的信息文本中,表示某一控制功能的字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。
Denis
2023/04/15
5590
点击加载更多

相似问题

从字符串中移除一组字母

21

从字符串中移除一组特殊字符

10

从句子中移除助词

13

从字符串中移除一组字符串,多次出现

14

从句子中移除/替换特定字符串的跨度

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文