我正在阅读.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(',' |',' |',')。
不确定是否有这样的东西,但任何指向此的指针都会有所帮助。
答案 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)