0

我是 Python 新手,我不知道 Python 中的正则表达式。这是问题。我在标准输出中有一个像“总成本:37”这样的句子,我想提取成本信息是 37。当我在特定行中匹配“总成本:”这个词时,我应该如何获得该行的其余部分我感兴趣的信息?

4

2 回答 2

3

使用regex

Total Cost:\s?解释:

“总成本”:匹配字面量Total Cost:

\s?1 to 0 times Whitespace [\t \r\n\f]

捕获组([-+]?\d+)

[-+]?1 to 0 times matches one of the following chars: -+

\d+infinite to 1 times Digit [0-9]

In [121]: strs="some text Total Cost: 37 some more more Total Cost: -100"

In [122]: re.findall(r"Total Cost:\s?([-+]?\d+)",strs)
Out[122]: ['37', '-100']
于 2013-01-19T18:37:16.747 回答
0

虽然您说这个问题与“正则表达式”有关,但我专注于您所说的关于输出的内容。您的标准输出为:

Total Cost: 37

假设这个输出存储在一个名为output_string. 我使用 Python 解释器:

In [11]: output_string = "Total Cost: 37"

In [13]: (total_text_string, total_numeric_string) = 
         output_string.split(':')

In [14]: total_text_string
Out[14]: 'Total Cost'

In [15]: total_numeric_string
Out[15]: ' 37'

In [16]: float(total_numeric_string)
Out[16]: 37.0

我们取字符串,使用split方法,用“:”作为分隔符。我们最终得到两个字符串,一个用于文本部分,一个包含数字部分。由于您可能希望成本包含小数,因此您可以通过“float”将其“转换”为浮点数。然后,您可以决定要如何处理这些值。

于 2013-01-19T20:06:26.620 回答