0

私は Python を初めて使用し、Python の正規表現を知りません。これが質問です。stdout に "Total Cost: 37" のような文があり、37 であるコスト情報を抽出したいと考えています。特定の行で "Total Cost: " という単語に一致する場合、行の残りの部分を取得するにはどうすればよいですか?気になる情報は?

4

2 に答える 2

3

使用regex:

Total Cost:\s?説明:

"Total Cost": 文字どおりに一致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

質問は「正規表現」に関連しているとあなたは言いましたが、私はあなたが出力について何を言っていたかに焦点を当てます。次の STDOUT があります。

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、区切り文字として「:」を使用してメソッドを使用します。1 つはテキスト部分用で、もう 1 つは数値部分を含む 2 つの文字列になります。コストに小数を含める必要がある可能性が高いため、「float」を介して浮動小数点に「キャスト」できます。次に、これらの値をどうするかを決定できます。

于 2013-01-19T20:06:26.620 に答える