2013-07-23 139 views
0

我已经使用tika为某些pdf文件提取文本并将文本存储在文本文件中。 现在我想解析这些文件使用opennlp块解析器,但我无法解析文件行,因为它包含一些特殊字符(一些方形类型的符号)之间没有空间之间的空间,我的文本文件中的示例行(无法显示这些方型符号,变音符号)删除文件行中除白色空格以外的所有特殊字符

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 

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

回答

0
  1. 阅读文件line by line
  2. 用“”替换这些行中的不需要的字符:“line = line.replaceAll("^\\d{2}(\\.\\d)+ +", "").replaceAll(" +\\?$", "");
  3. 使用FileWriter写入文件。

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

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

+0

嗨,我的线都没有在特定的格式,我不能写一个正则表达式,还有没有其他的解决方案 – user2609542

+0

您仍然可以使用正则表达式,如果没有特定的格式,但特定的字符。要删除所有不可打印的字符,请使用'replaceAll('[^ \\ p {Print}]',“”)'。要替换特定字符,请使用上面的替换方法列出字符。你甚至可以用'replaceAll('[\\ W]',“”)'删除不在A-Za-z0-9中的所有东西。 –

0

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

str = str.replaceAll("\\W+", " "); 
相关问题