循环查找 space 和 python
Loop to find space with python
c = "ab cd ef gf"
n = []
for x in c:
if x == " ":
d = c.find(x)
n.append(d)
print(n)
我希望这段代码能给我这样的东西。 [2,5,8]
但相反,它给了我这个。 [2,2,2]
请帮我找出错误。谢谢。
find()
会找到第一个实例,所以它总是在索引 2 处找到 space。您可以在使用 enumerate()
时跟踪索引,这样您就不会不需要 find()
:
c = "ab cd ef gf"
n = []
for i, x in enumerate(c):
if x == " ":
n.append(i)
print(n)
或者作为列表理解:
[i for i, x in enumerate(c) if x == " "]
一种方法是:
space_idxs = []
for idx, char in enumerate(s):
if char == ' ':
space_idxs.append(idx)
那是因为 find(pattern) 函数 returns 模式的第一个条目。让我用所需的函数 find_all(string, pattern)
补充你的代码
def find_all(string, pattern):
start = 0
indexes = []
for char in string:
start = string.find(pattern, start)
if start == -1:
return indexes
indexes.append(start)
start += len(pattern)
c = "ab cd ef gf"
n = []
n = find_all(c, " ")
print(n)
尝试
c="ab cd ef gh"
x=" "
print([t for t, k in enumerate(c) if k==x])
它将 return [2,5,8]
在你的代码中,你在c中搜索x的索引值,三次:
- 在 for 循环中,您将字符串中的所有字符一一提取,
- if 循环验证它是否是 space
- 现在当字符是 space 时它进入 if 循环
- find 命令将在 c 中查找 x (space)
这是 2
重复三次并附加到 n
如果你想把它放在列表中:
n=([t for t, k in enumerate(c) if k==x])
c = "ab cd ef gf"
n = []
for x in c:
if x == " ":
d = c.find(x)
n.append(d)
print(n)
我希望这段代码能给我这样的东西。 [2,5,8] 但相反,它给了我这个。 [2,2,2]
请帮我找出错误。谢谢。
find()
会找到第一个实例,所以它总是在索引 2 处找到 space。您可以在使用 enumerate()
时跟踪索引,这样您就不会不需要 find()
:
c = "ab cd ef gf"
n = []
for i, x in enumerate(c):
if x == " ":
n.append(i)
print(n)
或者作为列表理解:
[i for i, x in enumerate(c) if x == " "]
一种方法是:
space_idxs = []
for idx, char in enumerate(s):
if char == ' ':
space_idxs.append(idx)
那是因为 find(pattern) 函数 returns 模式的第一个条目。让我用所需的函数 find_all(string, pattern)
补充你的代码def find_all(string, pattern):
start = 0
indexes = []
for char in string:
start = string.find(pattern, start)
if start == -1:
return indexes
indexes.append(start)
start += len(pattern)
c = "ab cd ef gf"
n = []
n = find_all(c, " ")
print(n)
尝试
c="ab cd ef gh"
x=" "
print([t for t, k in enumerate(c) if k==x])
它将 return [2,5,8]
在你的代码中,你在c中搜索x的索引值,三次:
- 在 for 循环中,您将字符串中的所有字符一一提取,
- if 循环验证它是否是 space
- 现在当字符是 space 时它进入 if 循环
- find 命令将在 c 中查找 x (space) 这是 2 重复三次并附加到 n
如果你想把它放在列表中:
n=([t for t, k in enumerate(c) if k==x])