在字符串中的特定列下提取值

时间:2018-05-06 15:02:22

标签: python string python-3.x

我的字符串如下

Module   Available     Used     Remaining
          (Watts)     (Watts)    (Watts) 
------   ---------   --------   ---------
1           485.0        0.0       485.0

我需要在Used下提取值。我试图分裂字符串。有没有更好的方法来获得价值?

2 个答案:

答案 0 :(得分:2)

使用str.split

<强>演示:

s = """Module   Available     Used     Remaining
          (Watts)     (Watts)    (Watts) 
------   ---------   --------   ---------
1           485.0        0.0       485.0"""

for i in s.split("\n"):
    if i.strip()[0].isdigit():
        val = i.split()
        print(val[2])

使用正则表达式:

import re
val = re.findall("\d+\s+\d*\s+\d*\.\d*\s+\d*\.\d*\s+\d*\.\d*", s)
for v in val:
    print(v.split()[2])

<强>输出:

0.0

答案 1 :(得分:0)

也许这个是一个矫枉过正,但您可以使用读取数据框中的字符串,然后获得所需的值:

import io

import pandas as pd

your_string = io.StringIO("""Module   Available     Used     Remaining
          (Watts)     (Watts)    (Watts) 
------   ---------   --------   ---------
1           485.0        0.0       485.0""")

df = pd.read_csv(your_string, 
                 sep=" ", 
                 skipinitialspace=True, 
                 skiprows=[1, 2])

df将如下所示:

    Module  Available   Used    Remaining
0   1   485.0   0.0     485.0

print(df.loc[0, 'Used'])

会给你0.0

P.S。:这是基于问题的the following答案&#34;如何从字符串创建Pandas DataFrame&#34;。