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

时间:2017-12-12 10:11:58

标签: python pandas csv

我正在阅读.csv文件并创建Panda Dataframe。从这个Dataframe我得到一个值应该是" list"具有逗号分隔值的项目。但它出现了一个"字符串" item和我必须使用分隔符来分割它中的值。

例如:我有一个名字的字符串变量" 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(',' |',' |',')。

不确定是否有这样的东西,但任何指向此的指针都会有所帮助。

3 个答案:

答案 0 :(得分:3)

这是CSV的常见问题。幸运的是,只需正确阅读您的CSV,您就可以将其扼杀在萌芽状态,这样您就不必在以后进行所有这些不必要的后期处理。

使用Map TC_1_called = WebUI.callTestCase(findTestCase('01_UserManagement/Login'), [('username') : 'Anna', ('password') : 'Analyst_2017',('map'):''], FailureHandling.STOP_ON_FAILURE) 阅读您的数据框时,请将正则表达式传递给read_csv \ sep -

delimiter

现在,df = pd.read_csv(..., sep='\s*,\s*', engine='python') 应该是一个字符串列表。

答案 1 :(得分:3)

您可以使用skipinitialspace=True parameter

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

skipinitialspace :布尔值,默认为False

Skip spaces after delimiter.

注意:此参数在分隔符后需要空格,因此@cᴏʟᴅsᴘᴇᴇᴅ的答案更通用。

答案 2 :(得分:0)

import re

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