【问题标题】:Remove all special characters from file line except white space从文件行中删除除空格之外的所有特殊字符
【发布时间】:2013-07-22 03:43:54
【问题描述】:

我已经使用 tika 为一些 pdf 文件提取了文本,并将文本存储在文本文件中。 现在我想使用opennlp Chunk解析器解析这些文件,但我无法解析文件行,因为它包含一些特殊字符(一些方形符号),单词之间没有空格,我的文本文件中的示例行(无法显示那些方形符号,变音符号)

51.2.3  Troubleshooting DHCP Configuration  ?
62  Module 3: Point-to-Point Protocol (PPP) ?
62.1    Configuring HDLC Encapsulation  ?

所以我想得到这些行

Troubleshooting DHCP Configuratin
Module 3: Point-to-Point Protocol(PPP)
Configuring HDLC Encapsulation

请建议我如何做到这一点?

【问题讨论】:

    标签: java file apache-tika opennlp


    【解决方案1】:
    1. 读取文件line by line
    2. 用“”替换每行中不需要的字符:line = line.replaceAll("^\\d{2}(\\.\\d)+ +", "").replaceAll(" +\\?$", "");
    3. 使用FileWriter写入文件。

    这假设行首的数字格式是 dd(.d)*,其中 d 是一位数字,第一个之后的每个部分只有一位数字。否则,必须更改正则表达式以适合您的格式。

    通过附加.replaceAll("[æ╚]", ""); 将所有这些字符添加到方括号中来删除神秘符号。确保您具有正确的编码。如果您使用“UTF-8”读取文件,则必须将这些字符复制到编辑器中,您可以在其中指定该文件为“UTF-8”。

    【讨论】:

    • 嗨,我的台词格式不规范,我不会写正则表达式,有没有其他解决方案
    • 如果不是特定格式而是特定字符,您仍然可以使用正则表达式。要删除所有不可打印的字符,请使用replaceAll('[^\\p{Print}]', "")。要替换特定字符,请使用上面的替换方法列出字符。您甚至可以使用replaceAll('[\\W]', "") 删除所有不在 A-Za-z0-9 中的内容。
    【解决方案2】:

    用空格替换所有非单词字符是否足够,或者至少是朝着正确方向迈出的一步?

    str = str.replaceAll("\\W+", " ");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 2015-08-23
      • 1970-01-01
      相关资源
      最近更新 更多