【发布时间】:2011-09-09 18:52:51
【问题描述】:
我得到了一些可以使用的字符串。每个代表一个数据集,由数据集的名称和相关的统计信息组成。它们都有以下形式:
s= "| 'TOMATOES_PICKED' | 914 | 1397 |"
我正在尝试实现一个函数,该函数将解析字符串并返回数据集的名称、第一个数字和第二个数字。有很多这样的字符串,每个都有不同的名称和相关的统计信息,所以我认为最好的方法是使用正则表达式。到目前为止,这是我所拥有的:
def extract_data2(s):
import re
name=re.search('\'(.*?)\'',s).group(1)
n1=re.search('\|(.*)\|',s)
return(name,n1,)
所以我对正则表达式做了一些阅读,并弄清楚了如何返回名称。对于我正在使用的每个字符串,数据集的名称都以 ' ' 为界,这就是我找到名称的方式。那部分工作正常。我的问题是获取数字。 我现在在想的是尝试匹配一个以竖线 ('|') 开头的模式,然后是任何内容(这就是我使用 .* 的原因),然后是另一个竖线以尝试获取第一个数字。有谁知道我如何在 Python 中做到这一点? 我在上面的代码中尝试的第一个数字基本上返回整个字符串作为我的输出,而我只想得到数字。 - 我对编程很陌生,所以如果这个问题看起来很初级,我深表歉意,但我一直在努力阅读和搜索与我的情况相近的答案,但没有运气。我很感激任何帮助。 这个想法是它将能够:
return(name,n1,n2)
这样当用户输入一个字符串时,它可以只解析字符串并返回重要信息。到目前为止,我在尝试获取数字时注意到它会将数字作为字符串返回。无论如何返回 n1 或 n2 作为一个数字?请注意,对于某些字符串,n1 和 n2 可以是整数或小数。
【问题讨论】:
-
这类具有明确定义字段的字符串通常使用字符串拆分、切分等更快、更容易解析。例如
[str.strip for ss in "|".split(s)]将帮助您入门。
标签: python regex string numbers return