【问题标题】:How to extract a number from a string in python如何从python中的字符串中提取数字
【发布时间】:2013-01-31 14:17:49
【问题描述】:

我有一个来自 db 的字符串,例如:

"any string coming from db[090876]"

我只想获取数字数据并使用它。在这种情况下,我只想要090876。我怎样才能在 Python/Django 中做到这一点?我试过用're'但没有运气。

【问题讨论】:

  • 你能展示你的尝试吗?一旦你理解了正则表达式,这并不是一个非常困难的问题——也许看到你的尝试可以帮助我们更好地解释你显然缺少的正则表达式概念。

标签: python regex django


【解决方案1】:
In [74]: import re

In [75]: re.findall('\d+',"any string coming from db[090876]")
Out[75]: ['090876']

为了安全起见,仅在 db 之前的括号之间使用数字:

In [76]: re.findall('db\[(\d+)\]',"any string coming from db[090876]")
Out[76]: ['090876']

【讨论】:

  • 可能还想在 'db\[(\d+\)]' 的前面包含一个 db
  • @Hoopdady -- 谢谢,我只是在写一个更受限制的例子,现在已经添加了。
  • 感谢 root,但我只需要 090876。使用你的解决方案我可以得到这个。 In [3]: res = re.findall('db[(\d+)]',"来自 db[090876] 的任何字符串") In [4]: res Out[4]: ['090876']跨度>
  • @sandeep -- re.findall 返回一个列表,您可以通过索引获取第一个元素:re.findall('db\[(\d+)\]',"any string coming from db[090876]")[0]
  • @JeromeJ - 因为我使用Ipython qtconsole 测试/输入了它 - 它与代码无关......
【解决方案2】:
x="any string coming from db[090876]"
word_ends=True
num_groups=[]
num=''
for i in x:

    try:
          int(i)
          num+=i
          word_ends=False

    except:

          if word_ends == False:
          num_groups.append(num)
          num=''
          word_ends=True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多