Python 在处理列表时,如何在spark中查找字符串中的索引?

Python 在处理列表时,如何在spark中查找字符串中的索引?,python,Python,如何查找字符串中数字0-9的索引 MyString = "Are all the black cats really black 045. I don't think so 098." MyString.find([0-9]) TypeError:必须是str,而不是list 我如何绕过这一点并复制SQL server中本质上的PATINDEX?。下面给出了使用正则表达式进行搜索的透视图,但我仍然无法插入列表。您可以使用列表理解来查找数字: >>> [My

如何查找字符串中数字0-9的索引

MyString = "Are all the black cats really black 045. I don't think so 098."
MyString.find([0-9])
TypeError:必须是str,而不是list


我如何绕过这一点并复制SQL server中本质上的PATINDEX?。下面给出了使用正则表达式进行搜索的透视图,但我仍然无法插入列表。

您可以使用列表理解来查找数字:

>>> [MyString.find(str(i)) for i in range(10)]
[36, -1, -1, -1, 37, 38, -1, -1, 60, 59]
如果您想要最小的数字,可以使用
min

>>> min([j for j in [MyString.find(str(i)) for i in range(10)] if j != -1])
36
或者您可以使用
re.search
与正则表达式模式一起使用:

>>> import re
>>> re.search("[0-9]", MyString).start()
36

请记住将正则表达式模式用双引号括起来,否则它将被解释为0-9(零减九)的列表,即-9。

这是Pyspark问题还是Python问题?这是Python问题。谢谢你指出,谢谢。不过,我相信实际情况必须是37。我相信这是因为Python从0开始。是的,如果您想与SQL行为保持一致,您需要添加1@VinaybillaAlso,如果我需要在位置10后开始搜索,我该怎么做?类似于我们在SQL中对CHARINDEX所做的搜索?
min([MyString.find(str(I))中的j在[MyString.find(str(I))范围(10)],如果j>=9])
@Vinaybilla