2016-08-18 153 views
0

不同长度我有这样一个变量:获取逗号后第一个单词的一个字符串在Python

**Name** 
Heikkinen, Miss. Laina 
Futrelle, Mrs. Jacques Heath (Lily May Peel) 
Allen, Mr. William Henry 
... 

我想提取逗号后的第一个字。

这对我的作品,但它需要2个数据帧步骤:

train_df1=train_df['Name'].str.split(',',expand=True) 
train_df2=train_df1[1].str.split(' ',expand=True)[1] 

train_df包含变量“名称”

+0

可以使用正则表达式? –

+0

所以你试图从你的文本样本中得到'Miss','Mrs'和'Mr'? – Frodon

+0

@Frodon。是的,我想提取称呼 – muni

回答

1

您可以使用正则表达式来得到这个。

import re 
s="Heikkinen, Miss. Laina" 
re.findall(r'(?<=,\s)[a-z]+',s,re.I) 

如果字符串的格式是一致的(字后跟一个,后跟一个空格,随后空格分隔单词),使用

[i for i in s.split()][1] 
+0

谢谢,你可以请建议一个更简单的解决方案? – muni

+0

如何在dataframe上应用这个:我试过了,但似乎没有工作:x = train_df ['Name'] [i for i in s.split()] [1] – muni

+0

'x = [i for i in train_df ['Name']。str.split()] [1]'? – Frodon

0

使用str.partitionstr.split

s = 'Heikkinen, Miss. Laina' 
s.partition(',')[-1].split()[0] # 'Miss.' 
+0

您可以请网站上的数据框示例吗? – muni

0

只是为了在一个班轮添加假设你的字符串由换行符分离,第一行是某种形式的标题:

salutations = [x.split(", ")[1].split(".")[0] for x in string.split("\n")[1:]] 

只是,如果你不想做正则表达式溶液

0

I = str.index( “”) =中newstr STR [I:]

相关问题