【问题标题】:How to convert complex text document to single character string如何将复杂的文本文档转换为单个字符串
【发布时间】:2020-06-26 03:50:19
【问题描述】:

我有一份手稿,想使用正则表达式从中提取所有引文。处理手稿中的测试样本,我开发了一个正则表达式——见这里:Regex in R: How to extract citations from manuscript。它在名为 samp 的示例上完美运行:

str_extract_all(samp, "\\([A-Za-z][^)]*\\d{4};|;\\s[A-Za-z][^)]*\\d{4}\\)|\\([A-Za-z][^)]*\\d{4}.*?\\)|\\b[A-Z][a-z].*\\([^A-Za-z)]\\w.*?\\)|\\b[A-Z][a-z].*\\(forthcoming\\)|\\b[A-Z][a-z].*\\(in preparation\\)|\\([A-Za-z][^);]*\\d{4}|(?<=;\\s)[A-Za-z][^);]*\\d{4}")

但是:正则表达式在实际手稿上效果不佳(它明显更大,并且可能具有比示例更复杂的内部结构),因为与示例不同,我无法将手稿转换为单个连贯的字符串.

我尝试这样读入文档:

read.table([my path], header = F,  sep = "\n", fill = F, stringsAsFactors = F, strip.white = T)

我使用paste 将它们融合在一起:

paste0(manuscript$V1, collapse = "")

但生成的对象仍然有内部划分,这会阻止正则表达式在整个文档上无缝工作。

那么,如何才能将手稿读入或后处理,使其构成单个不间断的字符串

非常感谢您对这个问题的帮助。

【问题讨论】:

    标签: r regex text data-conversion


    【解决方案1】:

    我们可以使用readLines 来获取文件的内容作为行列表,然后我们将其折叠为单个不间断的字符串。

    manuscript <- paste0(readLines(path_to_file), collapse= "")
    

    根据文件的内容,我们希望在提取信息之前进行一些预处理。但这应该会以您在帖子中链接的问题的示例中所示的形式为我们提供字符串。

    【讨论】:

    • 谢谢。它确实将手稿转换成一个连贯的字符串,但我通过read.tablepaste0的方法也是如此。错误必须在于正则表达式!无论如何,我接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2010-11-26
    • 1970-01-01
    • 2021-12-28
    • 2014-03-25
    • 2015-11-16
    • 2017-12-02
    • 2013-05-30
    相关资源
    最近更新 更多