2016-06-13 96 views
1

我正在使用R进行文本分析,并且需要将句子的第一个字母转换为小写,同时保留其他大写字母的方式。所以我用命令无法删除txt文件中的空白行R

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

哪些工作,但部分。问题在于,为了进行文本分析,我必须将pdf文件转换为txt格式,而现在txt文件包含大量空行(分页符,可能返回的内容),因此我使用的命令不会将大写字母出现在新行中。我试图用多个\ s删除空行,使用gsub中的不同组合,\ r,\ n但没有任何效果。当我做检查(X)的TM-包,输出看起来按以下方式:

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

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

+0

你是什么意思的“句首”字?多少封信?他们全部?他们中有一些? –

+0

只是第一个资本,所以它看起来像: '[341]效率和生产力。我们认为' –

回答

3

给出您的输出,空行在字符向量中显示为单独的字符串。你需要使用grep来过滤那些出:

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

然后您就可以执行后续的分析,但你可能仍然需要先串联线得到一个字符串:

x = paste(x, collapse = '\n') 
+0

@Kohrad鲁道夫谢谢!我已经尝试过了,但是我得到了以下错误信息:'UseMethod(“meta”,x)中的错误: 没有适用于'meta'类的'meta'方法' –

+0

@Daria没有调用到我的代码中的“元”,所以我不知道这个错误来自哪里。你要么使用不同的代码,要么你的R会话以非常奇怪的方式重新定义了一些核心R构造。 –

+0

我想出了 'x < - gsub(“^ \\ s + | \\ s + $”,“”,x)'命令。感谢您的帮助! –

1

你可以获得使用^[A-Z]新线和两例的分离或签署|

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

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

x <- x[x != ""] 
+0

谢谢!后者为我工作!然而,我仍然遇到这个问题,我将在下一个评论中发表一个例子。 基本上在行的开头处留有“额外的”空格...... –

+0

'[283]网络工具。 [284]不,我们没有提供第二季度的具体目标。 [285]谢谢。' –

+0

你可以使用'gsub(“^”,“”,x)'来排除行首的空格 – JeremyS