【问题标题】:Dataframe manipulation: How to replace artifacts within a text-column?数据框操作:如何替换文本列中的工件?
【发布时间】:2018-11-02 00:16:44
【问题描述】:

目标是在每一行的数据框中的名为“text”的文本列中查找和替换来自 pdf 解析的工件。

"<U+FB01>" 将替换为 "fi" & "<U+FB02>" 将被替换为 "fl"

df<-data.frame(text=c('Das neue P<U+FB02>ege<U+FB01>nanzierungsgesetz','Die Kon<U+FB02>ikte zwischen Spitalrat und','Im neuen Spital<U+FB01>nanzierungsgesetz, welches'))

应该是:

df2<-data.frame(text=c('Das neue Pflegefinanzierungsgesetz','Die Konflikte zwischen Spitalrat und','Im neuen Spitalfinanzierungsgesetz, welches'))

数据框截图:https://i.imgur.com/UvFIrNg.png

我能找到最接近的解决方案(但无法使其工作):Searching text within a column and completely replace

感谢您的宝贵时间!

【问题讨论】:

  • 请包含一个有代表性的、最少的文本和代码示例。屏幕截图没有帮助,因为我们无法复制和粘贴数据。

标签: r


【解决方案1】:

你可以使用gsub:

df <- data.frame(text=c('acbd<U+FB01>efg', 'abc<U+FB01> efg <U+FB02>', 'ab cd'),
                 stringsAsFactors = F)
df

#                      text
#1          acbd<U+FB01>efg
#2 abc<U+FB01> efg <U+FB02>
#3                    ab cd

df$text <- gsub('<U\\+FB01>', 'fi', df$text)
df$text <- gsub('<U\\+FB02>', 'fl', df$text)
df

#          text
#1    acbdfiefg
#2 abcfi efg fl
#3        ab cd

请注意,\\ 转义了在正则表达式中具有特殊含义的 + 字符。

【讨论】:

  • 试过 for (i in 1:length(texte$text)) { texte$text[i] &lt;- gsub('&lt;U\\+FB01&gt;', 'fi', texte$text[i]) print(i) } 并没有抓住工件。 Dataframe 是用stringsAsFactors = F 构建的。
  • 用我的文字尝试了你的确切代码。 df &lt;- data.frame(text=texte$text, stringsAsFactors = F) df$text &lt;- gsub('&lt;U\\+FB01&gt;', 'fi', df$text)也没有效果
猜你喜欢
  • 1970-01-01
  • 2021-07-22
  • 2015-05-13
  • 2021-10-28
  • 1970-01-01
  • 2022-12-16
  • 2018-08-25
相关资源
最近更新 更多