Python - 根据列表中首次出现的字符剪切字符串
Python - Cut string based on first occurrence of characters in list
我在列中有一些值,例如
data1 = "any_number_of_characters&wanted=gsjgj87-hdjh_66&"
data2 = "any_number_of_characters&wanted=g232gj87-hdjh_66#dhvdhohoh"
data3 = "any_number_of_characters&wanted=gsjgj87-hdjh_66?uhdjd=skjhnknkn"
考虑到这是一个接一个循环中的同一字段。
现在我在上面的字符串中找到值字符串 'wanted=' 然后想要值直到我找到 '&' 或 '#' 或 '?'
如果我在 if-else 循环中执行此操作,由于角色外观的不可预测性,它适用于一个角色,但对其他角色无效。
我想在不像 find() 函数那样逐个字符地迭代的情况下实现这一点,但我无法从这 3 个字符中搜索第一次出现的单个字符。
您可以搜索 wanted
之后最接近您要搜索的字符串的任何停止字符:
data1 = "any_number_of_characters&wanted=gsjgj87-hdjh_66&"
data2 = "any_number_of_characters&wanted=g232gj87-hdjh_66#dhvdhohoh?uhdjd=skjhnknkn"
data3 = "any_number_of_characters&wanted=gsjgj87-hdjh_66?uhdjd=skjhnknkn#dhvdhohoh"
def extractData(data, startPattern, endCharacters='&#?'):
start = data.find(startPattern)
end = min(
[
pos if -1 <
(pos := data.find(ec, start + 1)) > start else len(data)
for ec in list(endCharacters)
]
)
return (data[start + len(startPattern):end])
for data in (data1, data2, data3):
print(extractData(data, 'wanted='))
输出:
gsjgj87-hdjh_66
g232gj87-hdjh_66
gsjgj87-hdjh_66
我在列中有一些值,例如
data1 = "any_number_of_characters&wanted=gsjgj87-hdjh_66&"
data2 = "any_number_of_characters&wanted=g232gj87-hdjh_66#dhvdhohoh"
data3 = "any_number_of_characters&wanted=gsjgj87-hdjh_66?uhdjd=skjhnknkn"
考虑到这是一个接一个循环中的同一字段。 现在我在上面的字符串中找到值字符串 'wanted=' 然后想要值直到我找到 '&' 或 '#' 或 '?'
如果我在 if-else 循环中执行此操作,由于角色外观的不可预测性,它适用于一个角色,但对其他角色无效。
我想在不像 find() 函数那样逐个字符地迭代的情况下实现这一点,但我无法从这 3 个字符中搜索第一次出现的单个字符。
您可以搜索 wanted
之后最接近您要搜索的字符串的任何停止字符:
data1 = "any_number_of_characters&wanted=gsjgj87-hdjh_66&"
data2 = "any_number_of_characters&wanted=g232gj87-hdjh_66#dhvdhohoh?uhdjd=skjhnknkn"
data3 = "any_number_of_characters&wanted=gsjgj87-hdjh_66?uhdjd=skjhnknkn#dhvdhohoh"
def extractData(data, startPattern, endCharacters='&#?'):
start = data.find(startPattern)
end = min(
[
pos if -1 <
(pos := data.find(ec, start + 1)) > start else len(data)
for ec in list(endCharacters)
]
)
return (data[start + len(startPattern):end])
for data in (data1, data2, data3):
print(extractData(data, 'wanted='))
输出:
gsjgj87-hdjh_66
g232gj87-hdjh_66
gsjgj87-hdjh_66