从Python中的字符串中提取字符

时间:2016-02-24 17:35:54

标签: python python-3.x

如何提取用户输入的名称的前半部分和后半部分?我已经拆分了名称,以便我有一个列表,并设置了变量firstNamelastName。如果第一个名字的字母数为奇数,则中间字母不包括,但如果第二个名字的字母数为奇数,则中间字母为包含。我怎样才能做到这一点?

示例名称:

  • Marie Morse - > Marse
  • Logan Peters - > Loers
  • Meghan Hufner - > Megner

3 个答案:

答案 0 :(得分:0)

您必须将每个名字和姓氏命名为字符串变量并执行以下操作:

first = 'Marie'
last = 'Morse'
first_index = len(first)/2 +1
last_index = len(last)/2
result = first[:first_index] + last[last_index+1:]
print result

答案 1 :(得分:0)

这样的事可能适合你:

>>> def concatenate(s):
        s1,s2 = s.split()
        i,j = len(s1)//2, len(s2)//2
        return s1[:i]+s2[j:]

>>> s = 'Meghan Hufner'
>>> concatenate(s)
'Megner'
>>> s = 'Helen Paige'
>>> concatenate(s)
'Heige'
>>> s = 'Marie Morse'
>>> concatenate(s)
'Marse'
>>> s = 'Logan Peters'
>>> concatenate(s)
'Loers'

答案 2 :(得分:0)

发生的事情是,你真的使用flooringceiling分裂。要获取数字的ceiling,您可以使用math.ceil()函数。以下对于Python3来说有点过分,但我使用int(math.ceil...),因为在Python2中,math.ceil()返回一个浮点数。我也使用len(last) / 2.因为在Python2中,将整数除以整数总是会得到一个整数。 (地板部门)。以下内容假设firstNamelastName已经定义:

import math

first_index = len(firstName) // 2               # floor division
last_index = int(math.ceil(len(lastName) / 2.)) # ceiling division

print(first[:first_index] + last[-last_index:])