Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Python 2.7_Python Multithreading - Fatal编程技术网

如何使用python查找给定字符串中的第二个相同单词?

如何使用python查找给定字符串中的第二个相同单词?,python,file,python-2.7,python-multithreading,Python,File,Python 2.7,Python Multithreading,这是我的示例字符串:“x:2:x,z:3:z,w:4:w,x:22:x” 我的目标是找到字母“X”之间的数字,我可以使用下面的代码找到,但这只适用于第一次出现或字母“X”,如何处理第二次出现,我不知道如何使用循环 Start_strp = BGP.find('x') strp_BGP = BGP[Start_strp+len(content)+1:3] return "peer-address:" + strp_BGP 我将使用字符串方法spli

这是我的示例字符串:“x:2:x,z:3:z,w:4:w,x:22:x” 我的目标是找到字母“X”之间的数字,我可以使用下面的代码找到,但这只适用于第一次出现或字母“X”,如何处理第二次出现,我不知道如何使用循环

        Start_strp = BGP.find('x')
        strp_BGP = BGP[Start_strp+len(content)+1:3]
        return "peer-address:" + strp_BGP

我将使用字符串方法splitstrip。这些可能非常有用:split根据分隔符将字符串拆分为列表,strip删除字符串周围的空格。我将使用in运算符而不是find。对于我将介绍的情况,我们只需要检查“x”是否存在,而不是它的位置

我还将使用已经内置的函数mapfilter,它们都将函数应用于列表中的每个元素。过滤器将只返回那些函数返回True的元素,map将返回列表中每个元素的函数输出。关键字lambda定义了一个匿名函数,输入和输出用冒号分隔

s = "x: 2 : x, z: 3 :z, w :4: w,x:22:x "

l = s.split(',')  # ['x: 2 : x', ' z: 3 :z', ' w :4: w', 'x:22:x ']
f = filter(lambda s: 'x' in s, l)  # ['x: 2 : x', 'x:22:x ']
map(lambda s: s.split(':')[1].strip(), f) 
['2', '22']

我鼓励您使用这些函数,但我也理解掌握for循环很重要。最好的

你好!!谢谢,该程序可以运行,但问题是……在我的实际字符串中,要获取的数字不在“:“它是这样给定的”x>2342很乐意提供帮助!然后,我们可以在re模块中使用函数split,而不是使用string方法split(它包含正则表达式工具,对于您的情况非常有用)。为此,您必须首先导入re模块,然后使用re.split('>|2import re s=”x> 23 422我得到的输出为无,实际上我的字符串是s=“axe>2我无法重现您的错误。当我导入re
s=“axe>2时