我从.csv文件中提取了列名,现在我想使用正则表达式来大写单词的第一个字母和该字符之后的第一个字母_
。示例:loan_status->贷款状态
Loan_ID
loan_status
Principal
terms
effective_date
due_date
paid_off_time
past_due_days
age
education
Gender
到目前为止,这是我想出的 (^[a-z])+\w+
更新感谢WiktorStribiżew,这是我想出的。我想知道是否有更紧凑的方法来执行以下操作。
import csv
import pandas as pd
import re
dataFrame = pd.read_csv('Loan_payments_data_2020_unclean.csv')
columnsDict = {"columnName": list(dataFrame.columns)}
columnsDataFrame = pd.DataFrame(columnsDict)
replacedColumns = columnsDataFrame['columnName'].str.replace(r'(?<![^_]).', lambda x: x.group().upper())
dataFrame.columns = list(replacedColumns)
print(dataFrame)
您可以使用
>>> df = pd.DataFrame({'Loan_ID': ['loan_status','Principal','terms','effective_date','due_date','paid_off_time','past_due_days','age','education','Gender']})
>>> df['Loan_ID'].str.replace(r'(?<![^_]).', lambda x: x.group().upper())
0 Loan_Status
1 Principal
2 Terms
3 Effective_Date
4 Due_Date
5 Paid_Off_Time
6 Past_Due_Days
7 Age
8 Education
9 Gender
Name: Loan_ID, dtype: object
在(?<![^_]).
正则表达式匹配比换行字符要么是在字符串的开始或之后立即出现其他任何字符_
字符。它等于(?:(?<=^)|(?<=_)).
regex,在线查看其演示。
由于您不能在字符串替换模式中操作匹配的值,因此需要一个callable作为替换参数。lambda x: x.group().upper()
只是获取匹配值并将其转换为大写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句