[英]Finding Digits in a String
我是python的新手,並且在以下代碼方面遇到了麻煩。 目的是創建一個輸出字符串中所有整數的函數。
def get_digits(str1):
for i in str1:
if i.isdigit():
return i
但是,它僅返回字符串中的第一個整數,我不確定如何獲取它以打印所有整數。
如果這個問題很愚蠢,我深表歉意,我已經在這個網站和其他網站上閑逛了一陣子,還沒有解決。
濃縮成列表理解
def get_digits(strval):
return [i for i in strval if i.isdigit()]
print get_digits('432jfsd5fs')
print ''.join(get_digits('432jfsd5fs'))
退貨
['4', '3', '2', '5']
4325
>>> def print_digits(str1):
... for i in str1:
... if i.isdigit():
... print i
...
>>> print_digits("a12b3")
1
2
3
print
打印東西。 return
將答案返回給運行該函數的對象。 我想您會混淆這兩者,因為如果您在python中運行一個函數,它將打印返回的任何內容。 但這僅僅是因為python試圖提供幫助並向您顯示結果; 這不是您通常打印內容的方式。
如果您真的想返回數字,並在其他位置打印它們,那么一種方法是建立結果列表:
>>> def get_digits(str1):
... results = []
... for i in str1:
... if i.isdigit():
... results.append(i)
... return results
...
>>> print(get_digits("a12b3"))
['1', '2', '3']
無論何時從函數返回,函數都會停止執行。 我會在這里推薦一個生成器 ,它使您無需編寫太多代碼即可從函數返回可迭代的對象。
這個問題有點家庭作業,因此我將不給出完整答案,但是我建議您查看此StackOverflow答案 ,以獲取有關生成器和yield
關鍵字的詳細說明。
您可以遍歷數字並返回它們的列表,如下所示:
def get_digits(str1):
digits = [] # define new list
for i in str1:
if i.isdigit():
digitis.append(i) # i is a digit, append to list
return digits # return the list of digits
找到第一個數字后,函數將退出。 為了使其返回所有數字,請將結果收集在列表中。
def get_digits(str1):
digits = []
for i in str1:
if i.isdigit():
digits.append(i)
return digits
您還可以通過使用列表理解來簡化功能:
def get_digits(str1):
return [d for d in str1 if d.isdigit()]
如果只想打印結果而不返回結果,請在原始功能中將return i
替換為print i
。
def get_digits(str1):
numbers = ""
for i in str1:
if i.isdigit():
numbers = numbers + i
return numbers
簡單說明:
# your code
def get_digits(str1):
for i in str1:
if i.isdigit():
return i
當函數滿足return i
,它將停止進一步執行,並返回值。
由於其他人已經詳細解釋了,因此我將提出更多解決方案供參考:
#1. Using generator
def get_digits_generator(str1):
for i in str1:
if i.isdigit():
yield i
#2. Returning a list of digits
def get_digits_list(str1):
list_of_digits = []
for i in str1:
if i.isdigit():
list_of_digits.append(i)
return list_of_digits
#3. List comprehension
str1 = "asdbh12njasdo29ns"
list_of_digits = [character for character in str1 if character.isdigit()]
import re
re.findall('\d', str1)
a=""
def get_digits(str1):
for i in str1:
if i.isdigit():
a=a&i
return a
這樣嘗試。 因為您在找到第一個數字的同時返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.