簡體   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