Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用分隔符搜索字符串中的值_Python - Fatal编程技术网

Python 使用分隔符搜索字符串中的值

Python 使用分隔符搜索字符串中的值,python,Python,以下代码将搜索val1。如何找到val2 x = "[val1][val2]" section = x[x.find("[")+1:x.find("]")] print(section) >> val1 如何找到val2?例如,返回数组节[0]和节[1] 已编辑。以下是如何使用re列出两个方括号之间的所有字符串,非贪婪: import re x = "[val1][val2]" section =

以下代码将搜索val1。如何找到val2

x = "[val1][val2]"
section = x[x.find("[")+1:x.find("]")]
print(section)

>> val1
如何找到val2?例如,返回数组节[0]和节[1]


已编辑。

以下是如何使用
re
列出两个方括号之间的所有字符串,非贪婪:

import re
x = "[val1][val2]" 
section = re.findall('(?<=\[).*?(?=\])',x)
print(section)
这个怎么样

x = "[val1][val2]"
values = x[1:-1].split("][")
print(values)
  • x[1:-1]
    删除两端的两个
    []
    字符(
    “[val1][val2]”
    ->
    “val1][val2”
  • .split(“][”)
    将字符串拆分为两个列表(
    “val1][val2”
    ->
    [“val1”,“val2”]
  • 打印(值)
    打印出值
  • 希望这有助于解释此代码

    注意:这适用于任意数量的值(请尝试
    “[val1][val2][val3]”

    印刷品:

    val1 val2
    

    您可以这样做:

    def extract(inp):
        tmp=inp
        while len(tmp):
            start=tmp.find('[')
            end=tmp.find(']')
            if start==-1 or end==-1:
                break
            val=tmp[start+1:end]
            yield val
            tmp=tmp[end+1:]
        
    x = "[val1][val2]"
    for i in extract(x):
        print(i)
    

    显示您想要的输出?并解释您想说什么我不知道val值是多少…有时一个[val]有时几个[val1][val2][val3]…此代码实际上适用于任意数量的值…让我将其添加到我的answer@AyushGarg谢谢!OP还说他们不能使用regex或任何其他库:/
    val1 val2
    
    def extract(inp):
        tmp=inp
        while len(tmp):
            start=tmp.find('[')
            end=tmp.find(']')
            if start==-1 or end==-1:
                break
            val=tmp[start+1:end]
            yield val
            tmp=tmp[end+1:]
        
    x = "[val1][val2]"
    for i in extract(x):
        print(i)