我必須在Python中編寫一個程序,它要求用戶輸入一個字符串,並且它只打印出以「s」或「S」開頭的單詞。我正在使用.split
函數來創建單詞列表。但是,我無法弄清楚如何讓Python識別以「s」或「S」開頭的單詞。任何建議或幫助,非常感謝!Python中的分割函數
0
A
回答
2
我會用一個字符串的.lower
方法,像這樣:
>>> mystr = 'Super Sally rode a super ship.'
>>> [x for x in mystr.split() if x.lower()[0] == 's']
['Super', 'Sally', 'super', 'ship.']
>>>
您也可以使用.startswith
方法,而不是在位置0索引的字符串:
# This method, while longer, is really clear as to what's going on.
[x for x in mystr.split() if x.lower().startswith('s')]
0
使用startswith
(http://docs.python.org/2/library/stdtypes.html#str.startswith )
for x in your_string.split():
if x.upper().startswith('S'):
print x
2
你可以使用字符串的startswith
方法結合lower
方法,該方法將字符串轉換爲全部小寫字母。
words = raw_input().split()
for word in words:
if word.lower().startswith('s'):
# do something
方法startswith
將返回True當且僅當調用字符串開頭,你傳遞給它作爲參數的子字符串。
1
借款@ iCodez的奇妙例如串 - 這裏有一個正則表達式的方法:
>>> import re
>>> mystr = 'Super Sally rode a super ship.'
>>> re.findall(r's\S+', mystr, flags=re.I)
['Super', 'Sally', 'super', 'ship.']
這節省了多達分割字符串和比較明確的情況下正常化。
此外,您還可以稍微調整它不能捕捉到不必要的標點符號,如:
>>> re.findall(r's\w+', mystr, flags=re.I)
['Super', 'Sally', 'super', 'ship']
0
startswith
其實需要一個元組。
所以:
words = raw_input()
print [word for word in words.split() if word.startswith(('s', 'S'))]
聽起來很像英語和易讀。我更喜歡它.lower()
相關問題
- 1. python分割函數
- 2. python中的分割方法函數
- 3. javascript中的分割函數
- 4. 分割函數
- 5. Python套接字和分割函數
- 6. 在Python中分割整數?
- 7. 在Python中分割數組
- 8. 在C++中分割函數
- 9. 分割數組python
- 10. Sql分割函數
- 11. C++的分割函數
- 12. 麻煩在Python中分割和分割
- 13. Python中的修改的Ackermann函數分割錯誤
- 14. 鏘分割函數參數
- 15. Python中分割函數的好奇行爲
- 16. Python:數組中的分割列表
- 17. JavaScript中的ie8分割函數問題
- 18. Python中的分割集
- 19. python中的分割線
- 20. Python中的多重分割
- 21. Haskell:分割函數出錯
- 22. 分割爲python
- 23. 來自分割字符串函數的分割錯誤
- 24. 爲什麼我使用Perl的分割函數不分割?
- 25. python在列表中分割數字
- 26. 在熊貓/ Python中分割數據
- 27. 在Python中分割數據幀列
- 28. 在JavaScript函數中分割和替換
- 29. 在Emacs Lisp函數中分割窗口
- 30. xpath中是否有分割函數?
我更喜歡'x.lower()。startswith(「s」)' – Claudiu
@Claudiu - Lol。我只是打字。 :) – iCodez