2016-10-26 15 views

答えて

4
input_ = 'firstname.middlename.lastname.city.state.' 
x = [a for a in input_.split('.') if a] 

print('.'.join(x[-2:])) # prints city.state 

作品と同じ出力を持つように私はこの表現を変更するにはどうすればよい

'firstname.middlename.lastname.city.state'['firstname.middlename.lastname.city.state'[:'firstname.middlename.lastname.city.state'.rfind(".")].rfind(".")+1:] 

2

文字列が.endswith()を使用して点で終わるかどうかを確認し、最後のドットを削除します。

str = "firstname.middlename.lastname.city.state." 
if str.endswith('.'): 
    str = str[:-1] 

これは最後を削除します。現在の方法に従ってください。

0

文字列がドットで終わるかどうかによって正しいスライスオブジェクトを返す辞書を作成します。

>>> 
>>> s = 'firstname.middlename.lastname.city.state.' 
>>> d = 'firstname.middlename.lastname.city.state' 
>>> c_s = {True:slice(-3, -1), False:slice(-2, None, None)} 
>>> s.split('.')[c_s[s.endswith('.')]] 
['city', 'state'] 
>>> d.split('.')[c_s[d.endswith('.')]] 
['city', 'state'] 
>>> 

または関数を記述します。

>>> def city_state(s): 
    return s.split('.')[-3:-1] if s.endswith('.') else s.split('.')[-2:] 

>>> city_state(s) 
['city', 'state'] 
>>> city_state(d) 
['city', 'state'] 
>>> 
3

分割文字列の正規表現に基づいて

import re 
input_string = "firstname.middlename.lastname.city.state." 
".".join(re.findall(r'[^.]+', input_string)[-2:]) 
関連する問題