【发布时间】:2021-03-20 10:30:39
【问题描述】:
如何根据 url 拆分字符行?我在数据框中有一列,其中每一行的文本超过 200-300 行,并包含一堆 url、特殊字符和数字等。我正在尝试清理此列。
最初的想法是从整列中删除停用词和标点符号,但这会弄乱文本中现有的网址。
因此,第二种方法是将文本拆分为多个列,其中拆分发生在每个 url。与此相关的一个后续问题是,每行中的 url 位置是否不同,因此仍然难以仅清理文本?
这里是示例文本:
sample_text <- "Random text](https://random_url.com/image.png) --- more random text : - !!!!! (Numbers in the middle, versions 4.3.2.1 more random text ) [] --- //// more and more random text for another 300 lines. Line1 has some useful text , line 2 has a url, https://rstudio.com/maybe_has_some_version_files/2/image.png [ #] and continues for another 299 lines."
我确实尝试了 strsplit(),但它从文本中删除了 url。
url_pattern <- "http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*,]|(?:%[0-9a-fA-F][0-9a-fA-F]))+|\\)$"
split_string_1 <- strsplit(sample_text, url_pattern, perl = TRUE)
预期的输出应该是: 将字符串拆分为多列。
所以我的问题分为两部分:
- 如何拆分字符串并保留url?
- 如何拆分字符串并为每个拆分创建新列?
编辑:
是的,我不想要新列,而是希望清理文本并将 URL 保留在其位置。
问题是:
- 如何拆分字符串、清理其余文本而不弄乱 URL 并保留 URL 在文本中的位置?
【问题讨论】:
-
您期望的实际输出是什么?一条线会变成多条线吗?还有什么?
-
@TimBiegeleisen 不完全是,预期的输出是将字符串拆分为多列。但是,另一个问题是,对于剩余的行,一个 url 的拆分可能不会发生在同一位置,那么我该如何清理文本列呢?这有意义吗?
标签: r regex data-cleaning strsplit