当前位置: 首页 > 知识库问答 >
问题:

Spark用于解析CSV文件中不被引号括起来的反斜杠转义逗号

谷梁承宣
2023-03-14
Name,Age,Address,Salary
Luke,24,Mountain View\,CA,100
df = spark.read.csv(fname, schema=given_schema,
                sep=',', quote='',mode="FAILFAST")

共有1个答案

王杰
2023-03-14

请先尝试使用rdd,重新格式化它,然后在它上面创建一个dataframe。

df  = sc.textFile(PATH_TO_FILE) \
    .map(lambda x: x.replace("\\," ,"|")) \
    .mapPartitions(lambda line: csv.reader(line,delimiter=','))\
    .filter(lambda line: line[0] != 'Name') \
    .toDF(['Name','Age','Address','Salary'])

这就是您的数据文件现在的样子:

>>> df.show();
+----+---+----------------+------+
|Name|Age|         Address|Salary|
+----+---+----------------+------+
|Luke| 24|Mountain View|CA|   100|
+----+---+----------------+------+

我必须用“”替换地址列“\\”,然后使用分隔符“,”拆分数据。不确定它如何符合您的要求,但它是工作的。

 类似资料:
  • 在我的应用程序中,我正在通过SQL中的“load data local infile”filename命令将一个csv文件读入DB。如果一个反斜杠出现在一个字段中,相邻字段将被合并。如何在将文件读入DB时忽略反斜杠。 例如, “ABCD”,“EFGH\”,“IJK” 它将作为col1 col2 col3 abcd efghijk null转到表中 我想把它变成col1 col2 col3 abcd

  • 在output.csv的第2行,转义字符和引号(“”)一起丢失了。我的要求是在output.csv中也保留转义字符。任何形式的帮助都将非常感谢。 提前谢了。

  • 问题内容: 如何在Python中转义反斜杠和单引号或双引号? 例如: 问题答案: 你是怎么做到的 如果您从文件中读取了“长字符串”(如您在注释中所述),那么您的问题将引起误解。由于您显然不完全了解转义的工作原理,因此您写下的问题可能与您真正遇到的问题不同。 如果这些是文件的内容(如图所示为51个字节+可能是一两个行尾字符): 那么这就是在python中的样子: 您在问题中写的内容将产生: 你看得到

  • 问题内容: 我正在使用Commons CSV来解析与电视节目有关的CSV内容。其中一个节目的节目名称带有双引号; 2010年9月10日116,6,2,29,“” JJ“(60分钟)”,“ http://www.tvmaze.com/episodes/4855/criminal- minds-6x02-jj ” 节目名称为“ JJ”(60分钟),该名称已用双引号引起来。这在封装的令牌和定界符之间抛出

  • 问题内容: 我正在编写一个Java应用程序以将数据从Oracle导出到CSV文件 不幸的是,数据的内容可能非常棘手。分隔符仍然是逗号,但连续的一些数据可能是这样的: 因此,这是该列上的字符串之一: 我说:“我是5‘10”。 别开玩笑了,我需要在Java生成的CSV文件中的excel或开放式办公室中显示上述注释,而又不能妥协,并且当然不能弄乱其他常规的转义符情况(即,常规的双引号和元组中的常规逗号)

  • 我写了一个小函数,将Windows路径“转换”为OSX路径,并在Finder中打开它。该函数与bash完美配合,但与zsh(我使用的是oh-my-zsh)不配合。 问题是,它会解析特定的反斜杠组合,例如:、、、