1

我正在使用 R 进行文本分析,需要将句子的第一个字母转换为小写,同时保持其他大写单词的原样。所以我使用了命令

     x <- gsub("(\\..*?[A-Z])", '\\L\\1', x, perl=TRUE)

这有效,但部分有效。问题是,对于文本分析,我必须将 pdf 文件转换为 txt 格式,现在 txt 文件包含很多空行(分页符,可能返回),因此我使用的命令不会转换大写字母出现在新行上。我试图在gsub中使用多个 \s、\r、\n 的不同组合来消除空行,但没有任何效果。当我执行 tm-package 的 inspect(x) 时,输出如下所示:

[346]                                                                                                                                                                                                                                                  
[347]    Thank you.                                                                                                                                                                                                                                    
[348]                                                                                                                                                                                                                                                  
[349]    Vice President of Investor Relations                                                                                                                                                                                               
[350]   

如果有人可以帮助我,我将不胜感激!

4

2 回答 2

3

鉴于您的输出,空行似乎是字符向量中的单独字符串。您需要使用以下方法过滤掉它们grep

empty_lines = grepl('^\\s*$', x)
x = x[! empty_lines]

然后您可以执行后续分析,但您可能仍需要先连接这些行以获得单个字符串:

x = paste(x, collapse = '\n')
于 2016-06-13T09:28:21.830 回答
1

您可以使用或符号来获取新行^[A-Z]并将两个案例分开|

x <- gsub("(\\..*?[A-Z]|^[A-Z])", '\\L\\1', x, perl=TRUE)

您可以在上述步骤之前或之后摆脱空行

x <- x[x != ""]
于 2016-06-13T09:40:29.547 回答