Amgalang 发表于 2018-11-16 10:53:12

python列表里查询某一个值出现的所有位置

列表里查询某一个值出现的所有位置 怎么实现呢?求帮助

冬雪雪冬 发表于 2018-11-16 11:06:08

自己用个for循环:
>>> lst =
>>> result = []
>>> for i in range(len(lst)):
        if lst == 3:
                result.append(i)

               
>>> result

Amgalang 发表于 2018-11-16 15:31:15

冬雪雪冬 发表于 2018-11-16 11:06
自己用个for循环:

您好,
       我的时文本的 希望您解答下,我实在有点困惑 谢谢

冬雪雪冬 发表于 2018-11-16 15:37:41

if判断的字符串要用引号括起来

喜欢吃菠菜 发表于 2018-11-16 22:08:34

本帖最后由 喜欢吃菠菜 于 2018-11-16 22:12 编辑

Amgalang 发表于 2018-11-16 15:31
您好,
       我的时文本的 希望您解答下,我实在有点困惑 谢谢

l=
    def GetPosition(key,ilist):
      return [(idx,item) for (idx,item) in enumerate(ilist) if item==key]

    print(GetPosition(3,l))

结果:
你如果要查找文本,把l换成文本的列表,key参数输入文本就可以

Amgalang 发表于 2018-11-19 09:17:04

喜欢吃菠菜 发表于 2018-11-16 22:08
结果:
你如果要查找文本,把l换成文本的列表,key参数输入文本就可以

   您好 我这个新手还是有点不懂,您看看 图,MINU 是 我想要找的单词,我希望能找到这个单词在文件里出现的所有位置。谢谢帮助

喜欢吃菠菜 发表于 2018-11-19 13:30:23

本帖最后由 喜欢吃菠菜 于 2018-11-19 13:37 编辑

Amgalang 发表于 2018-11-19 09:17
您好 我这个新手还是有点不懂,您看看 图,MINU 是 我想要找的单词,我希望能找到这个单词在文件里出 ...

如果是文件,就要进行文件操作。
参考一下,把文件名换成你的文件的路径,这个代码只找一行中的第一个匹配的单词,如果一行有多个,需要改进。

def find_word_pos(filename,word):
    res=[]
    with open(filename) as f:
      lines=f.readlines()
      linenum=0
      for line in lines:
            linenum+=1
            s=line.lower()
            pos=s.find(word)
            if pos!=-1:
                res.append()
    return res
if __name__=='__main__':
    txtfilename=r'c:\temp\10+.txt'
    word='minu'
    word_pos=find_word_pos(txtfilename,word)
    if word_pos:
      print('找到单词"%s"在文件的位置:' % word)
      for each in word_pos:
            print('第{0}行位置{0}开始'.format(each))
    else:
      print('未找到单词“%s%"' % word)

喜欢吃菠菜 发表于 2018-11-19 14:01:18

Amgalang 发表于 2018-11-19 09:17
您好 我这个新手还是有点不懂,您看看 图,MINU 是 我想要找的单词,我希望能找到这个单词在文件里出 ...

这是可以查同一行,出现多个要查找的单词的代码:
def find_word_pos(filename,word):
    import re
    res=[]
    with open(filename) as f:
      lines=f.readlines()
      linenum=0
      for line in lines:
            linenum+=1
            pat=re.compile(word, re.RegexFlag.I)
            pos=pat.finditer(line)
            for each in pos:
                res.append(])
    return res
if __name__=='__main__':
    txtfilename=r'c:\temp\10+.txt'
    word='minu'
    word_pos=find_word_pos(txtfilename,word)
    if word_pos:
      print('找到单词"%s"在文件的位置:' % word)
      for each in word_pos:
            print('第{0}行位置{0}开始'.format(each))
    else:
      print('未找到单词“%s%"' % word)

Amgalang 发表于 2018-11-19 15:30:53

喜欢吃菠菜 发表于 2018-11-19 14:01
这是可以查同一行,出现多个要查找的单词的代码:

谢谢您,不过还是没太懂,我自己做了一个语料库,想在这个txt里 找到一些高频单词的位置,比如,“BIG” 这个单词 在我的txt中[ 3,7,10,19,35,66]第三处,7处....这样的展现 找到其 出现的位置,您看,能实现吗?

喜欢吃菠菜 发表于 2018-11-19 15:54:18

Amgalang 发表于 2018-11-19 15:30
谢谢您,不过还是没太懂,我自己做了一个语料库,想在这个txt里 找到一些高频单词的位置,比如,“BIG”...

你试过运行我这个代码了吗?
如果是位置,应该基本就可以了啊
你要的是位置还是统计单词出现的次数?

Amgalang 发表于 2018-11-19 19:24:56

喜欢吃菠菜 发表于 2018-11-19 15:54
你试过运行我这个代码了吗?
如果是位置,应该基本就可以了啊
你要的是位置还是统计单词出现的次数?

我要的是 一个单词出现的所有位置 哈哈,我试着让代码跑跑

Amgalang 发表于 2018-11-22 19:35:57

喜欢吃菠菜 发表于 2018-11-19 14:01
这是可以查同一行,出现多个要查找的单词的代码:

您好,真心感谢您,您的代码 解决了我的问题,不过来了个新的问题,
就是 现在代码跑完后 也在出现 比如,我要找到 单词 ‘SKY’代码跑完后 也出现了 'TTSky‘,或者是 ‘SKYOO',但是 我就想要 独立的’SKY' 不要某些单词中的 ,或者以它开头的,就要‘SKY'没有其他成分的,您看能实现吗?是不是要把我的文件 先都改为字符串呢?希望指点。谢谢

喜欢吃菠菜 发表于 2018-11-22 20:53:36

本帖最后由 喜欢吃菠菜 于 2018-11-22 21:07 编辑

Amgalang 发表于 2018-11-22 19:35
您好,真心感谢您,您的代码 解决了我的问题,不过来了个新的问题,
就是 现在代码跑完后 也在出现 比如 ...

def find_word_pos1(filename,word):
    import re
    res=[]
    with open(filename) as f:
      lines=f.readlines()
      linenum=0
      for line in lines:
            linenum+=1
            pat=re.compile(r'\b'+word+r'\b', re.RegexFlag.I)
            pos=pat.finditer(line)
            for each in pos:
                res.append(])
    return res
if __name__=='__main__':
    txtfilename=r'c:\temp\10+.txt'
    word='minu'
    word_pos=find_word_pos1(txtfilename,word)
    if word_pos:
      print(f'找到单词"{word}"在文件的位置:')
      for each in word_pos:
            print(f'第{each}行位置{each}开始')
    else:
      print(f'未找到单词“{word}"')

Amgalang 发表于 2018-11-22 21:14:13

喜欢吃菠菜 发表于 2018-11-22 20:53


哇,真心谢谢你,好像跟您 学习python 谢谢。{:7_113:}

喜欢吃菠菜 发表于 2018-11-22 21:27:05

Amgalang 发表于 2018-11-22 21:14
哇,真心谢谢你,好像跟您 学习python 谢谢。

互相学习

Amgalang 发表于 2018-12-22 19:27:02

您好,再请教个问题,
      text4.dispersion_plot(["citizens", "democracy", "freedom", "duties", "America"])
我用同样的方式在我的文件里查询了单词“NI”,然而图上也出现了单词中间含有NI的词怎样把这个问题解决呢?我需要 就”NI“单词,不要词中间的带有 NI 的,求解答,万分感谢
页: [1]
查看完整版本: python列表里查询某一个值出现的所有位置