鱼C论坛

 找回密码
 立即注册
查看: 1316|回复: 12

[已解决]如何让find或index把字符串位置都标出来?

[复制链接]
发表于 2021-7-23 20:34:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

在学习字符串的操作方法时,碰到个问题:

如何让find(或index)把符合的字符串位置都找出来?按目前的方法只找出第一个位置

>>> str = '不管在哪里不论哪里困难何人在哪里干扰哪里出问题'
>>> str.find('哪里',0,len(str))
3
最佳答案
2021-7-23 23:40:09
本帖最后由 3236654291 于 2021-7-23 23:49 编辑
  1. s  = '不管在哪里不论哪里困难何人在哪里干扰哪里出问题'
  2. #要求用户输入搜索的字符
  3. content = input(':')
  4. #把要求搜索的字符替换成一个空格
  5. s = s.replace(content,' ')
  6. a = []
  7. for i in s:
  8.     a.append(i)

  9. num = 0

  10. for i in a:
  11.     if i == ' ':
  12.         print(a.index(i) + num)
  13.         a.remove(i)
  14.         num += len(content)#取决于搜索对象的长度

  15.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-23 20:42:47 | 显示全部楼层
用正则表达式,或者 find 一次就 replace 一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 23:03:43 | 显示全部楼层
建议不要使用内置函数做变量名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 23:40:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 3236654291 于 2021-7-23 23:49 编辑
  1. s  = '不管在哪里不论哪里困难何人在哪里干扰哪里出问题'
  2. #要求用户输入搜索的字符
  3. content = input(':')
  4. #把要求搜索的字符替换成一个空格
  5. s = s.replace(content,' ')
  6. a = []
  7. for i in s:
  8.     a.append(i)

  9. num = 0

  10. for i in a:
  11.     if i == ' ':
  12.         print(a.index(i) + num)
  13.         a.remove(i)
  14.         num += len(content)#取决于搜索对象的长度

  15.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 23:43:23 | 显示全部楼层
这里用到了replace不知道行不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 12:17:29 | 显示全部楼层
qiuyouzhi 发表于 2021-7-23 20:42
用正则表达式,或者 find 一次就 replace 一次

您好!正则表达式我不会,在《零基础入门学习python》书里面有吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-24 12:28:35 | 显示全部楼层
Geeker_odd 发表于 2021-7-24 12:17
您好!正则表达式我不会,在《零基础入门学习python》书里面有吗?

有的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 13:36:56 | 显示全部楼层

你这个代码可以,谢谢!

但是,我按我的思路,使用replace写了一段代码,却不行。不知道问题出在哪里?麻烦帮我看一下:

str_test = '不管在哪里不论哪里有困难何人在哪里干扰哪里出问题'
appear = []
while '哪里'in str_test:
    position = int(str_test.find('哪里'))
    appear.append(position)
    str_test.replace('哪里','where')

print(appear)

print(str_test)

运行后是空的,啥也没有:

================================================================================ RESTART: D:/Practice/find_replace for string.py ================================================================================
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-24 13:40:32 | 显示全部楼层
Geeker_odd 发表于 2021-7-24 13:36
你这个代码可以,谢谢!

但是,我按我的思路,使用replace写了一段代码,却不行。不知道问题出在哪里 ...

我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-24 13:48:10 | 显示全部楼层
  1. str_test = '不管在哪里不论哪里有困难何人在哪里干扰哪里出问题'
  2. appear = []
  3. while '哪里' in str_test:
  4.     position = int(str_test.find('哪里'))
  5.     appear.append(position)
  6.     str_test = str_test.replace('哪里','where')#你没有重新赋值给str_test
  7.     #其次,replace这个函数是把所有的'哪里'一次性替换成where
  8.     #再其次,被替换的字符串长度要与'哪里'字符串长度相同

  9. print(appear)

  10. print(str_test)
复制代码


所以实际上你这个代码是行不通的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 13:50:31 | 显示全部楼层
好的,非常感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 14:16:45 | 显示全部楼层
3236654291 发表于 2021-7-24 13:48
所以实际上你这个代码是行不通的

我改进了一下,换这样就可以了:

str_test = '不管在哪里不论哪里有困难何人在哪里干扰哪里出问题'
appear = []
while '哪里'in str_test:
    position = int(str_test.find('哪里'))
    appear.append(position)
    str_test = str_test.replace('哪里','替换',1)

print(appear)

print(str_test)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-24 14:26:09 | 显示全部楼层
Geeker_odd 发表于 2021-7-24 14:16
我改进了一下,换这样就可以了:

str_test = '不管在哪里不论哪里有困难何人在哪里干扰哪里出问题'

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 05:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表