Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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_String - Fatal编程技术网

如何在python中将两个字符串的部分连接在一起

如何在python中将两个字符串的部分连接在一起,python,string,Python,String,我有以下两个字符串: request= "1/1/1.3.45.3.6/3/4 reply= "1/2/3" 我想返回一个新的字符串,它将请求的1.3.45.3.6与回复的2连接起来,以返回包含字符串的列表 输出应为列表: result= ["1.3.45.3.6.2"] 我有下面的方法,那不行。 方法的输入都是字符串 def concatentatestring(request, response): oidStatusValueList = [f"{i.split('/')[2]

我有以下两个
字符串

request= "1/1/1.3.45.3.6/3/4
reply= "1/2/3"
我想返回一个新的
字符串
,它将
请求
1.3.45.3.6
回复
2
连接起来,以返回包含
字符串的
列表

输出应为
列表

result= ["1.3.45.3.6.2"]
我有下面的方法,那不行。 方法的输入都是字符串

def concatentatestring(request, response):
    oidStatusValueList = [f"{i.split('/')[2]}.{j.split('/')[2]}" \
       for i in request for j in response \
           if (i.split('/')[1] == j.split('/')[1]) ]

添加两个字符串可以使用
+
操作符或使用f字符串来完成(我不认为有太多性能差异)

您可以使用所使用的
split
方法拆分字符串,然后如果请求和响应的格式始终相同,则可以得到拆分请求的2元素和拆分响应的1元素

def addstring(request, response):
    return [request.split('/')[2] + '.' + response.split('/')[1]]

添加两个字符串可以使用
+
操作符或使用f字符串来完成(我不认为有太多性能差异)

您可以使用所使用的
split
方法拆分字符串,然后如果请求和响应的格式始终相同,则可以得到拆分请求的2元素和拆分响应的1元素

def addstring(request, response):
    return [request.split('/')[2] + '.' + response.split('/')[1]]

不要使用列表理解,因为您不是在重复请求和响应

>> request= "1/1/1.3.45.3.6/3/4"
>>> reply= "1/2/3"
>>> [f"{request.split('/')[2]}.{reply.split('/')[1]}"]
['1.3.45.3.6.2']
因此,您的
concatentatestring
函数如下所示

>>> def concatentatestring(request, response):
...     return [f"{request.split('/')[2]}.{response.split('/')[1]}"]
... 
>>> 
>>> concatentatestring(request, reply)
['1.3.45.3.6.2']

不要使用列表理解,因为您不是在重复请求和响应

>> request= "1/1/1.3.45.3.6/3/4"
>>> reply= "1/2/3"
>>> [f"{request.split('/')[2]}.{reply.split('/')[1]}"]
['1.3.45.3.6.2']
因此,您的
concatentatestring
函数如下所示

>>> def concatentatestring(request, response):
...     return [f"{request.split('/')[2]}.{response.split('/')[1]}"]
... 
>>> 
>>> concatentatestring(request, reply)
['1.3.45.3.6.2']

您正在迭代您编写的for循环中字符串中的每个字母

我相信这可以满足您的要求:

request= "1/1/1.3.45.3.6/3/4"
reply= "1/2/3"

def concatentatestring(request, response):
    request_splited=request.split('/') # =["1","1","1.3.45.3.6","3","4"]
    response_splited=response.split('/') # =["1","2","3"]
    if request_splited[1] == response_splited[1]:
        return [f'{request_splited[2]}.{response_splited[1]}']
    else:
        ...

您正在迭代您编写的for循环中字符串中的每个字母

我相信这可以满足您的要求:

request= "1/1/1.3.45.3.6/3/4"
reply= "1/2/3"

def concatentatestring(request, response):
    request_splited=request.split('/') # =["1","1","1.3.45.3.6","3","4"]
    response_splited=response.split('/') # =["1","2","3"]
    if request_splited[1] == response_splited[1]:
        return [f'{request_splited[2]}.{response_splited[1]}']
    else:
        ...

您的代码没有完全做到这一点,因为您需要正确地遍历字符串。您还应该在列表理解之前拆分它们。要同时使用索引和该索引处的值,您可以使用
枚举
,最后,您应该检查以确保尚未到达字符串的末尾,否则可能会导致错误

这就是您正在寻找的:

request = "1/1/1.3.45.3.6/3/4"
reply = "1/2/3"

def concatenateStrings(request, response):
    reqs = request.split("/")
    resps = response.split("/")
    oidStatusValueList = [f"{reqs[i+1]}.{resps[j+1]}" \
       for i, req in enumerate(reqs) for j, resp in enumerate(resps) \
           if (req == resp and i<len(reqs)-1 and j<len(resps)-1) ]
    return oidStatusValueList

result = concatenateStrings(request, reply)
print(result)

您的代码没有完全做到这一点,因为您需要正确地遍历字符串。您还应该在列表理解之前拆分它们。要同时使用索引和该索引处的值,您可以使用
枚举
,最后,您应该检查以确保尚未到达字符串的末尾,否则可能会导致错误

这就是您正在寻找的:

request = "1/1/1.3.45.3.6/3/4"
reply = "1/2/3"

def concatenateStrings(request, response):
    reqs = request.split("/")
    resps = response.split("/")
    oidStatusValueList = [f"{reqs[i+1]}.{resps[j+1]}" \
       for i, req in enumerate(reqs) for j, resp in enumerate(resps) \
           if (req == resp and i<len(reqs)-1 and j<len(resps)-1) ]
    return oidStatusValueList

result = concatenateStrings(request, reply)
print(result)

更新了问题中的代码。这是一个打字错误。没问题,但既然你总是保证有一个单一元素的列表(如果我读对了的话),为什么还要麻烦把它列成一个列表呢
print(f“{request.split('/')[2]}.{response.split('/')[1]}”)
提供所需的输出,无需迭代。如何确定字符串的哪些部分应合并?我想使用list@LauraSmith查看我的答案。更新了问题中的代码。这是一个打字错误。没问题,但既然你总是保证有一个单一元素的列表(如果我读对了的话),为什么还要麻烦把它列成一个列表呢
print(f“{request.split('/')[2]}.{response.split('/')[1]}”)
提供所需的输出,无需迭代。如何确定字符串的哪些部分应合并?我想使用list@LauraSmith看看我的答案,比如,在将请求和应答字符串连接在一起之前,我还需要检查它们的第二个索引是否相等。我该怎么做?如果他们不平等呢?我对响应进行了编辑,以检查它们是否相等。例如,在将请求和应答字符串连接在一起之前,我还需要检查它们的第二个索引是否相等。我该怎么做?如果他们不平等呢?我编辑了回复以检查这一点,但没有说明它们是否不相等