繁体   English   中英

Python-如何使用多个分隔符拆分列值

[英]Python - How to split column values using multiple separators

我正在读取.csv文件并创建熊猫数据框。 我从此数据框中获取一个值,该值应该是其中包含逗号分隔值的“列表”项。 但是它作为“字符串”项出现,我必须使用分隔符来拆分其中的值。

例如:我有一个名称为“ column_names”的字符串变量,具有以下值

column_names = "First_Name, Last_Name,Middle_Name"
column_names = column_name.split(',')

请注意第二个值之前的空格。 因此,当我打印此变量时,我将在第二个元素之前得到一个空格,这将在从该变量提取值时进一步造成麻烦。

print(column_names)

['First_Name','Last_Name','Middle_Name']

为了克服这个问题,如果我让分隔符和实际的分隔符一起留有一个空格(这里是','),那么这些值将无法正确分割,如下所示

column_names = "First_Name, Last_Name,Middle_Name"
column_names = column_names.split(', ')
print(column_names)

['First_Name','Last_Name,Middle_Name']

拆分时请注意逗号右边的空格。 使用此分隔符,我只能获得两个值,而不是三个值。

我的问题是变量可能包含逗号分隔的值,以及逗号左侧或右侧的空格,或者根本没有空格。 我必须用一个命令处理所有情况(如果可能)。 诸如在拆分时提供多个分隔符值之类的东西。

例如:column_names.split(','|','|',')。

不确定是否存在此类指针,但是任何指向此指针的指针将有所帮助。

这是CSV的常见问题。 幸运的是,您可以通过正确读取CSV来将其压缩在萌芽中,因此您以后不必进行所有不必要的后处理。

当使用read_csv读取数据帧时,将正则表达式传递给sep \\ delimiter -

df = pd.read_csv(..., sep='\s*,\s*', engine='python')

现在, df.columns应该是字符串列表。

您可以使用skipinitialspace=True参数

df = pd.read_csv(filename, sep=',', skipinitialspace=True)

skipinitialspace :布尔值,默认为False

 Skip spaces after delimiter. 

注意:此参数处理定界符的空格,因此@cᴏʟᴅsᴘᴇᴇᴅ的答案更为通用。

import re

column_names = "First_Name , Last_Name,Middle_Name"
l = re.compile("\s*,\s*").split(column_names)
print(l)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM