查找并返回文本的特定区域

时间:2014-01-01 04:09:42

标签: python-2.7

大家好,祝新年快乐!我有一个文本,我喜欢使用python脚本从特定字符串返回特定区域! 这是我的文字

#!/bin/sh
case "$1" in
start)
    ulimit -s 1024
    /usr/bin/oscam --config-dir /etc/tuxbox/config/oscam --daemon --pidfile /tmp/oscam.pid --restart 2 --utf8
    ;;
stop)
    kill `cat /tmp/oscam.pid` 2> /dev/null
    ;;
restart|reload)
    $0 stop
    sleep 1
    $0 start
    ;;
version)
    echo "svn8631"
    ;;
info)
    echo "oscam svn8631"
    ;;
*)
    echo "Usage: $0 start|stop|restart"
    exit 1
    ;;
esac
exit 0

从上面的文本我需要创建一个python命令,它总是只返回在引号之间写入 oscam svn8631 的内容!到目前为止,我唯一能做的就是使用此代码返回此文本的另一个区域

try:
    f = open("/etc/init.d/softcam", "r")
    content = f.read()
    f.close()
except:
    content = ""
contentInfo = content.split("\n")
if (content != ""):
    for line in contentInfo:
        if line.__contains__("usr/bin/"):
            idex = line.index("n/")
            line = line[(idex + 2):]
            return line

这当然会返回 usr / bin 文本之后的内容,而我需要在 info> 之后的另一个区域。有人可以帮我吗?我不知道如何让我的脚本阅读我需要的这个特定区域!提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用您创建的content变量, “oscam svn8631”文本可以用:

提取
for chunk in content.split(";;"):
    if chunk.strip().startswith('info)'):
        return chunk.split('"')[1]

分解bash case语句的自然方法是将其拆分为“;;”。然后,我们识别info部分(chunk.strip().startswith('info)'))并选择该部分中的第一个引用字符串(chunk.split('"')[1])。