2014-01-08 87 views
4

比方說,我有一個字符串如何獲取Python中字符串的前2個字母?

Str1 = "TN 81 NZ 0025" 
str2 = "DL 11C AA 1111" 
two = first2(str1) 
print(two) 
>>>TN 

如何獲得這些字符串的前兩個字母。我需要first2功能。

+0

在這種情況下'str1.split()[0]'也可以,如果你還需要其他的字段,它可能會更有意義。 – U2EF1

+0

@ U2EF1,不,它確實... str [0]爲您提供第一個字符,您需要str [:2]並且分割也是必需的。 – alvas

+0

@alvas'str1.split()[0]'和'str1 [0]'是兩段非常不同的代碼。 – U2EF1

回答

14

它就像string[:2]一樣簡單。 A 功能可以很容易地寫出來做到這一點,如果你需要。

即使這樣,很簡單,只要

def first2(s): 
    return s[:2] 
+1

我已經回滾了您的(無法解析的)編輯,因爲它只是錯誤的,使用了錯誤的片語法。 – ShinTakezou

+2

這是獲取前兩個字符的正確方法。你剛剛回答了OP,太好了。不過,我絕不會爲此使用函數。我更願意在代碼中明確表示,而不必追查驗證功能。在主代碼 – SDsolar

+0

中的'firsttwo = somestring [:2]'中,我同意,事實上我寫道:「如果需要,可以很容易地寫出函數來實現它。」沒有任何意義噸的函數,如'first2','first3','first4' ... – ShinTakezou

1

繼承人的簡單的功能是什麼樣子:

def firstTwo(string): 
    return string[:2] 
0

出於完整性:不要使用def的你可以給一個名稱爲lambda功能:

first2 = lambda s: s[:2] 
1

在蟒字符串是字符的列表中,但沒有明確列出的類型,只是列表類似的(即,它可以像一個列表處理的)。更正式地說,他們被稱爲sequence(見http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange):

>>> a = 'foo bar' 
>>> isinstance(a, list) 
False 
>>> isinstance(a, str) 
True 

由於字符串序列,你可以用slicing訪問列表的部分,由list[start_index:end_index]看到Explain Python's slice notation表示。例如:

>>> a = [1,2,3,4] 
>>> a[0] 
1 # first element, NOT a sequence. 
>>> a[0:1] 
[1] # a slice from first to second, a list, i.e. a sequence. 
>>> a[0:2] 
[1, 2] 
>>> a[:2] 
[1, 2] 

>>> x = "foo bar" 
>>> x[0:2] 
'fo' 
>>> x[:2] 
'fo' 

未定義時,切片符號將起始位置作爲0,結束位置作爲len(序列)。

在古代Ç天,這是一個字符數組,動態VS靜態列表聽起來像傳說現在整個問題,請參閱Python List vs. Array - when to use?

0

所有以前的例子會拋出一個異常的情況下,您的字符串不夠長。其他方法是使用 'yourstring'.ljust(100)[:100].strip()

這會給你前100個字符。 如果你的字符串最後一個字符是空格,你可能會得到一個較短的字符串。

相關問題