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

2024-04-19 02:59:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如:我有一个名为“column\u names”的字符串变量,其值如下

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

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

^{pr2}$

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

为了克服这个问题,如果我保持separator和实际的separator有一个空格(这里是“,”),那么这些值就不能正确地拆分,如下所示

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

['First_Name', 'Last_Name,Middle_Name']

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

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

例如:列_名称.拆分(','|', '|' ,'). 在

不确定是否有这样的,但任何指向这一点的指针将是有帮助的。在


Tags: 文件csv数据字符串namemiddlenamescolumn
3条回答

您可以使用^{} parameter

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

skipinitialspace : boolean, default 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)

这是CSV的常见问题。幸运的是,只要正确地读取CSV,就可以将其扼杀在萌芽状态,这样以后就不必再做这些不必要的后处理了。在

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

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

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

相关问题 更多 >