gpt4 book ai didi

java - 使用分隔符

转载 作者:行者123 更新时间:2023-12-01 04:37:43 25 4
gpt4 key购买 nike

以下代码读取 csv 文件并定义从 csv 文件的一行中获取的字段。问题是 csv 文件的名字列的名称包含逗号“,”(例如 Charles, Junior)。逗号及其后面的名字是名字的一部分。我无法想出一种有效的方法来检查这些逗号并忽略它们作为分隔符,因为它们是名字本身的一部分。逗号的存在会创建一个新选项卡,这是不希望的。我需要在不篡改 csv 文件的情况下执行此操作。有什么建议吗?

        //skip the first line since it is column names
strLine = br.readLine();
int tokenNumber= 0;

//read comma separated file line by line
while( (strLine = br.readLine()) != null)
{
//break comma separated line using ","
st = new StringTokenizer(strLine, ",");
while(st.hasMoreTokens())
{
switch (tokenNumber)
{
case 1: firstName = st.nextToken(); break;
case 2: lastName = st.nextToken(); break;
default: st.nextToken(); break;
}

tokenNumber++;
}

最佳答案

在处理这样的无效 CSV 文件时,您的选择相当有限。

  1. 如果您知道文件中有多少列,并且其他列都没有像这样的潜在逗号问题,您可以计算该行中的总列数,并重复将前两列组合在一起,直到您减少到您期望的列数

  2. 如果第三列具有可预测的值(例如数字),并且假设第二列永远不会出现逗号问题,则可以重复组合前两列,直到第三列包含与您期望的模式

  3. 如果您有名字列和/或姓氏列的允许值列表,您可以重复组合前两列,直到第一列和第二列中的值都具有有效值。

要问自己的关键问题是“您将如何手动处理此过程?”。如果手动过程依赖于使用一些人类推理(例如识别通用名称),那么您将很难在代码中完成此操作。

关于java - 使用分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com