2016-06-13 67 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