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

使用sc.textFile(APACHE SPARK RDD)读取时转义逗号[重复]

闽焕
2023-03-14

我正在尝试使用python将csv读取到rdd(SPARK)。我遇到的问题是使用带有逗号的split函数作为分隔符时。只要每列中没有逗号,这就可以正常工作。如果有逗号,则逗号会将每一列拆分为多个列。

e、 g。

empid,emp title,emp desc,college 123,developer,developer的角色是使用C、C等语言开发软件,college1

data = sc.textfile("files.csv")
empid, emp title, emp desc, college = line.strip().split(",")

在上面的示例中,emp desc也被拆分为college,请告诉我在读取数据集时如何处理每列中的逗号?

共有1个答案

王锐
2023-03-14

实际上,不可能知道哪些逗号应该是分隔符,哪些逗号不是没有额外信息的。您最好的选择可能是更改分隔符,或者确保在输入时以某种方式“转义”所有非分隔符逗号。

使用escape的解决方案:

如果所有非分隔符逗号都以某物为前缀,例如“\,”,则可以用逗号拆分并连接以转义开头的任何条目\

line = '123, developer, the role of developer is to develop softwares using languages such as C\\, C++ etc, college1'

temp = line.strip().split(',')

i=0
while i < len(temp)-1:
    if temp[i][-1] == '\\':
        temp[i:i+2] = [','.join(temp[i:i+2])]
    else:
        temp[i] = ','.join(temp[i].split('\\,'))
        i += 1

empid, emp_title, emp_desc, college = temp
print('empid: '+empid+'\nemp_title: '+emp_title+'\nemp_desc: '+emp_desc+'\ncollege: '+college)

输出:

empid: 123
emp_title:  developer
emp_desc:  the role of developer is to develop softwares using languages such as C, C++ etc
college:  college1

使用附加信息的解决方案:

另一方面,如果出于某种原因不能使用转义符来表示非分隔符逗号,那么下一个最佳选择就是强制附加信息。例如,如果您有理由相信只有emp\u desc变量才会有非分隔符逗号,那么您可以始终执行以下操作:

temp = line.strip().split(",")
empid = temp[0]
emp_title = temp[1]
emp_desc = temp[2:len(temp)-1]
college = temp[-1]
 类似资料:
  • 问题内容: 我正在尝试执行一些超级简单的o日志文件解析,所以我正在使用如下方法: 并非常适合以下输入: 要么 只是说些什么。 我该如何转义逗号,使其与中间逗号不匹配? 例如,如果我要在其中一部分中加入逗号: 我在想类似的东西: 但是我不知道如何创建拆分来避免匹配逗号。 我试过了: 但是,这是行不通的。 问题答案: 您可以使用否定的外观来解决它。 基本上说,在 _ 没有反斜杠的情况下_拆分每个。 输

  • 问题内容: 我正在尝试为我的PHP应用程序构建一个简单的部署脚本。我知道有几种工具可以完成这项工作(Capistrano,Phing等),但是对于我的简单部署例程而言,它们似乎需要大量工作。 我使用sshpass避免一遍又一遍地输入密码。但是,在上传压缩的安装程序之后,我需要将ssh插入服务器并运行一些命令。sed之一。因此,引号破坏了我的脚本。就像这样: 如您所见,我使用双引号启动SSH语句,但

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

  • 问题内容: 我需要编写一个扩展版本的StringUtils.commaDelimitedListToStringArray函数,该函数具有一个附加参数:转义字符。 所以打电话给我: 应该返回: 我当前的尝试是使用String.split()使用正则表达式拆分String: 但是返回的数组是: 有任何想法吗? 问题答案: 正则表达式 意思是“匹配不是反斜杠后跟逗号的字符”-这就是为什么模式之所以匹配

  • 问题内容: 我正在尝试使用csv文件读取文件,但某些字段是包含逗号的字符串。字符串用引号引起来,但是numpy不能将引号识别为定义了单个字符串。例如,使用“ t.csv”中的数据: 编码 产生错误: ValueError:检测到一些错误!第2行(获得4列而不是3列) 我正在寻找的数据结构是: 查看文档,我看不到任何解决方案。有没有办法用numpy做到这一点,或者我只需要使用模块读入数据,然后将其转

  • 例如,我希望使用函数将转换为: 空格的解决方案是,所以我希望比较这方面的解决方案也能帮助解释一些正则表达式的基本原理。