【问题标题】:Remove line breaks, paragraph breaks in csv file using R使用 R 删除 csv 文件中的换行符、分段符
【发布时间】:2015-10-20 22:24:35
【问题描述】:

我有一个 csv 文件,其中包含一些换行符或分段符。我是怎么知道的,当我在 word 文档中打开这个 csv 文件时,我会在段落之后和新段落的开头看到 pilcrow 符号¶。如何从 R 中的这个 csv 文件中去除这些换行符?非常感谢任何帮助。

既往病史

  1. 2002 年 10 月的持续性房颤伴房扑,房扑消融线后状态。
  2. Tachy/brady 综合征。
  3. 胰岛素依赖型糖尿病。患糖尿病约 35 年。
  4. 高血压,好吧

【问题讨论】:

  • 我投了赞成票,只是因为它教会了我一个新术语:pilcrow 代表。在我看来,在 R 中你会寻找长度等于 0 的行并简单地排除它们。将构建一个测试用例,但下次请发布纯文本示例而不是图像。

标签: regex r csv line-breaks


【解决方案1】:

这是一个测试用例。您只想删除空行。这是文件test.txt(包含拼写错误): (注意:您的示例显然不是 csv 文件。)

some header text

more text
 even omre text

------

 txt= readLines("test.txt")
 newtext <- txt[nchar(txt)>0]
 newtext
#[1] "some header text" "more text"        " even omre text"

要删除编号的行(以数字开头,后跟句点的行),可以使用 sub() 发布结果:

 txt <- "PAST MEDICAL HISTORY

 1. Persistent atrial fibrillation with atrial flutter, status-post atrial flutter ablation line in October of 2002.
 2. Tachy/brady syndrome.
 3. Insulin-dependent diabetes.  Has been diabetic for approximately 35 years.  
 4. Hypertension, well"


 newtxt= readLines(textConnection(txt))
 sub("^[[:digit:].]+", "", newtxt)
#------------------------
[1] "PAST MEDICAL HISTORY"                                                                                             
[2] ""                                                                                                                 
[3] " Persistent atrial fibrillation with atrial flutter, status-post atrial flutter ablation line in October of 2002."
[4] " Tachy/brady syndrome."                                                                                           
[5] " Insulin-dependent diabetes.  Has been diabetic for approximately 35 years.  "                                    
[6] " Hypertension, well"     

> sub("^[[:digit:].]+", "", newtxt[nchar(newtxt)>0])
[1] "PAST MEDICAL HISTORY"                                                                                             
[2] " Persistent atrial fibrillation with atrial flutter, status-post atrial flutter ablation line in October of 2002."
[3] " Tachy/brady syndrome."                                                                                           
[4] " Insulin-dependent diabetes.  Has been diabetic for approximately 35 years.  "                                    
[5] " Hypertension, well"  

【讨论】:

  • 我需要一个例子来理解“bulleted”的真正含义。 (如果这有用....它值得一票。)
  • 完美的尘埃有效,我已经解决了这个问题,现在问题看起来像文本中的编号项目符号,想知道我怎样才能摆脱这些问题?
  • 我已经用一个项目符号文本示例更新了我的问题....就在图片下方
【解决方案2】:

构造的 csv 文件在每一行的末尾都有换行符,这样任何解析器都可以知道一行何时结束(例如,如果您在 Python 中手动编写 csv 文件,则必须包含 \n 最后换行。尝试直接在 R 中打开 csv 文件并使用 head(your_file) 检查内容,您应该会看到它显示的内容与您预期的一样。

【讨论】:

  • 这将是对 OP 问题的一个很好的评论。由于某些程序员的精神错乱,OP 也很有可能谈论实际上跨越多行的糟糕的 CSV 文件。 OP 没有提供更多信息。
  • @xv70 ,我在 R 中打开了 csv 文件,我没有看到任何 /n 我在我的问题下方上传了一张图片。这是一个$ 分隔的 csv 文件。从开始部分 id=21017 开始的所有内容都应该在一列中。我想摆脱 21017... 和过去的医疗历史之间的那些段落中断
  • 你看不到任何 '\n' 因为它们被用作换行符并且不包含在 R 构造的字符向量中。那些 'pilcrow' 字符/synbols/glyphs 不在文件。某些编辑器正在使用它们来告诉您换行符的实际位置。
猜你喜欢
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 2020-05-27
  • 2020-01-10
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多