pandas 删除子字符串的出现和其后的任何内容

r6l8ljro  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(206)

dataframe与'文本'列,其中包含tweets每个tweets有短的url在结束时,我想删除该url使用正则表达式从所有行
“这是蒂利的,”他说。她只是来看看你。希望你一切都好。如果没有,她可以拍拍,依偎,啵啵,整个位。13/10 https//(这里的短网址我不能发布)'
我需要删除'http'和所有的正则表达式后,它使用正则表达式

archive_clean['text'] = archive_clean['text'].replace('https.', '', regex=True)

输出:
这是蒂利她只是来看看你。希望你一切都好。如果没有,她可以拍拍,依偎,啵啵,整个位。13/10 //(URL的其余部分)

ifmq2ha2

ifmq2ha21#

它应该像在你已经拥有的句点通配符的末尾添加一个星号一样简单。星号匹配前一项的零次或多次重复。(链接到python re docs)
将代码更改为

archive_clean['cleaned_text'] = archive_clean['text'].replace('http.*', '', regex=True)

删除"http"子串之后的所有内容。
也就是说,正则表达式几乎总是有例外。

  • 是否要去除"http"之前的空白?我刚才提供的解决方案将示例字符串保留为"...boops, the whole bit. 13/10 "
  • 你会有一些链接没有任何前导"http"吗?
  • 在文本中间是否会有另一个链接不应该被删除?示例:
"This is Tilly. She's just checking pup on you. Hopes you're doing ok. If not, she's available for pats, snugs, boops, the whole bit. Check her out at https://tillythepup.com. 13/10 https://twitter.com/post/xxxx"

在这种情况下,我们应该将正则表达式更改为"http\S*\Z",以确保它只删除锚定在字符串末尾的URL。

  • (注意:URL必须是连续的,没有空格,直到字符串的结尾。任何短于此的操作都不会按预期删除URL。也许可以通过使用.str.strip())* 预先剥离空白列来解决这个问题

感谢mozway在评论中提出这个建议。
有很多方法可以处理这些边缘情况,也许你已经想到了,但是你在问题中概述的简单情况相当简单。
希望这有帮助!

相关问题