[英]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.