[Todays date] Some text
some more text
even more text
[A different date] Some text
[Another different date] More text
Final text block
[Todays date] some text some more text even more text
[A different date] some text
[Another different date] More text Final text block
如果这一行文本没有以方括号开头,我想把这一行连接到上面的一行。我可以读它在正常使用这个代码。我试着用String.StartsWith但是我搞不懂。
List<String> testList = new ArrayList<String>();
BufferedReader br = new BufferedReader(new FileReader("SystemOut.log"));
String line = br.readLine();
while (line!=null) {
testList.add(line);
line=br.readLine();
}
br.close();
我正在寻找对此方法的更改,以使它以我想要的格式读取它,或者可能是一个将作用于我的列表
并对此问题排序的方法。谢谢
一个更好的解决方案(第三次尝试),它(希望)能更好地处理大文件,避免将整个文件读入缓冲区:
public static void main(String[] args) throws IOException {
String input = "[04/06/2021] Some text\n" +
"some more text\n" +
"even more text\n" +
"[01/01/2020] Some text \n" +
"[31/12/2020] More text\n" +
"Final text block";
List<String> testList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new StringReader(input))) {
br.lines().forEach(
line -> {
if (testList.isEmpty() || line.startsWith("[")) {
testList.add(line + " ");
} else {
testList.set(
testList.size() - 1,
testList.get(testList.size() - 1) + line + " ");
}
}
);
}
testList.forEach(System.out::println);
}
我想出了这个繁琐的方法:
public static void main(String[] args) throws IOException {
String input = "[04/06/2021] Some text\n" +
"some more text\n" +
"even more text\n" +
"[01/01/2020] Some text \n" +
"[31/12/2020] More text\n" +
"Final text block";
List<String> testList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new StringReader(input))) {
String nextLine = br.readLine();
StringBuilder currentLine = new StringBuilder(nextLine + " ");
while (nextLine != null) {
nextLine = br.readLine();
if (nextLine != null) {
if (nextLine.startsWith("[")) {
testList.add(currentLine.toString());
currentLine = new StringBuilder();
}
currentLine.append(nextLine).append(" ");
}
}
if (currentLine.length() > 0) {
testList.add(currentLine.toString());
}
}
testList.forEach(System.out::println);
}
如果您可以远离您的循环,那么更好/更简单的方法是:
public static void main(String[] args) throws IOException {
String input = "[04/06/2021] Some text\n" +
"some more text\n" +
"even more text\n" +
"[01/01/2020] Some text \n" +
"[31/12/2020] More text\n" +
"Final text block";
List<String> testList = new ArrayList<>();
String[] inputs = input.split("\\n");
StringBuilder currentLine = new StringBuilder(inputs[0] + " ");
for (int i = 1; i < inputs.length; i++) {
if (inputs[i].startsWith("[")) {
testList.add(currentLine.toString());
currentLine = new StringBuilder();
}
currentLine.append(inputs[i]).append(" ");
}
testList.add(currentLine.toString());
testList.forEach(System.out::println);
}
[04/06/2021] Some text some more text even more text
[01/01/2020] Some text
[31/12/2020] More text Final text block
问题内容: 如何在不设置集群计算基础架构(例如Hadoop或Spark)的情况下,将大小适中的Parquet数据集读取到内存中的Pandas DataFrame中?我只想在笔记本电脑上使用简单的Python脚本在内存中读取这些数据,但是数量很少。数据不驻留在HDFS上。它位于本地文件系统上,也可能位于S3中。我不想启动并配置其他服务,例如Hadoop,Hive或Spark。 我以为Blaze /
如何在不设置集群计算基础设施(如Hadoop或Spark)的情况下将大小适中的Parket数据集读取到内存中的Pandas DataFrame中?这只是我想在笔记本电脑上使用简单的Python脚本在内存中读取的适度数据。数据不驻留在HDFS上。它要么在本地文件系统上,要么可能在S3中。我不想启动和配置其他服务,如Hadoop、Hive或Spark。 我原以为Blaze/Odo会使这成为可能:Odo
问题内容: 例如,我有一个页面,我需要包括Google Map 库,并仅包含一个专门用于此页面的 .js 文件 (例如location.js) 。 我想在这行之后注入这两个文件 是否有可能做到这一点? 注意:我使用的是Sails.js v0.10 问题答案: Sails 在其视图渲染中使用,因此您可以使用块来完成所需的操作。 在您的文件中,在下方添加(例如): 然后在您要提供服务的视图中,使用您的
我有一个包含5个字段(列)的csv文件。在5列中,我只想读第二列和第四列,这是进一步处理所需的。现在我正在使用opencsv api的readAll()方法进行读取。通过使用这种方法,我必须处理所有列,以获得第二列和第四列的值。 有没有办法读取所需列的值,即从csv文件中读取第二个和第四个值? 这是正确的方法还是我应该使用其他方法?
我想用GSON库用java读这个JSON文件。我刚开始使用gson Libray。有人请纠正我的代码我的JSON文件如下所示: 这是我为读取这个文件而编写的java代码: 但我得到以下异常:
我有一个这样的文本文件: 如何将其读入地图或Erlang中的任何其他数据结构(以进一步迭代每个键及其各自的值)并最终打印地图?