如何处理文本文件中两个单词之间没有被我的程序读取为空格的大间隙?

Posted

技术标签:

【中文标题】如何处理文本文件中两个单词之间没有被我的程序读取为空格的大间隙?【英文标题】:How do I handle large gaps between two words in text file that aren't being read by my program as spaces? 【发布时间】:2017-01-18 13:09:34 【问题描述】:

我正在尝试从包含搜索信息的文本文件中读取:IP 地址、搜索时间、搜索词和点击的链接。我正在尝试逐行遍历文件并仅提取每个文件的 IP 地址,我通过将每个字符添加到字符串来执行此操作,直到我点击该行的第一个空格。但是,正如您在屏幕截图中看到的那样,IP 地址和时间之间的差距比海平面和压力之间的差距要大得多。这个间隙没有被记录为空间,程序在整行中找到的第一个空间是海平面和压力之间的空间。因此,我无法仅提取 IP。有没有办法解决或修复它?

screenshot of data in text file

【问题讨论】:

是空白标签吗?搜索“\t” 分隔符\s+ 会发生什么? 关注***.com/help/mcve @Tim 成功了,非常感谢! 添加为下面的答案。请采纳,谢谢! 【参考方案1】:

根据您的语言,'/\s+/' 应该可以解决问题。

见Explode string by one or more spaces or tabs

【讨论】:

【参考方案2】:
    您可以使用正则表达式来提取 IP 地址,将每一行提取到一个字符串中,然后您可以使用类似的东西。

字符串线 = extract_line();

String ip_pattern = "^(?:[0-9]1,3.)3[0-9]1,3$";

模式 r = Pattern.compile(ip_patter);

匹配器 m = r.matcher(line);

m.group(0);

如果找到,则有 ip 地址,否则为空。

如果该行中存在多个 IP 地址,您可以索引它们 m.group(n)。

借助以下链接得出:

    http://www.tutorialspoint.com/java/java_regular_expressions.htm

    https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html

【讨论】:

【参考方案3】:

大的空格是制表符。搜索“\t”

【讨论】:

以上是关于如何处理文本文件中两个单词之间没有被我的程序读取为空格的大间隙?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理文本字段中的格式化数字(货币)?

涉及多个特征时如何处理文本分类问题

如何处理文本区域中的 <tab>?

如何处理文本区域中的 <tab>?

如何在文本框中阅读两个单词,它们之间有一个:[关闭]

单词统计