Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在每一行对唯一的单词进行编号,而不是遗漏段落?_Python_Bash_Perl - Fatal编程技术网

Python 如何在每一行对唯一的单词进行编号,而不是遗漏段落?

Python 如何在每一行对唯一的单词进行编号,而不是遗漏段落?,python,bash,perl,Python,Bash,Perl,以前我阅读英语语言和编程,但现在我是初学者。所以我用了很多方法来学习英语(自学),但最后我用了一种个人的方法来学习。 所以我收集了很多短篇小说,然后日复一日地读。现在我像往常一样使用这种方法。 一周后,我开始学习perl one liner,它对我非常有用 然而,我进入了perl-pe'$q=0;s/(\w+)/++Sq.“.$1” 有关内容: 只是另一个 perl黑客 破解perl代码 它变成: 1.只有2.另一个 1.2.黑客 1.hacking 2.perl 3.code 好的,在我看到这

以前我阅读英语语言和编程,但现在我是初学者。所以我用了很多方法来学习英语(自学),但最后我用了一种个人的方法来学习。
所以我收集了很多短篇小说,然后日复一日地读。现在我像往常一样使用这种方法。
一周后,我开始学习perl one liner,它对我非常有用

然而,我进入了
perl-pe'$q=0;s/(\w+)/++Sq.“.$1”

有关内容:

只是另一个
perl黑客
破解perl代码

它变成:

1.只有2.另一个
1.2.黑客
1.hacking 2.perl 3.code

好的,在我看到这个perl一行程序之后,我有了一个想法

例如,我读了一篇短篇小说:

  • 早晨
    他醒了。他看见太阳升起。他刷牙。他的牙齿是白色的。他穿上衣服。他的衬衫是蓝色的。伊斯 鞋子是黄色的。他的裤子是棕色的。他下楼去了。他得到了一份工作 碗。他倒牛奶和麦片粥。他吃东西。他拿到了报纸。他 阅读

  • 首先
    上学那天他去上课。前面有一个空座位。他坐在座位上。他环顾四周。有不同的 人。他向旁边的女孩打招呼。她笑了。老师 进来。她关上门。大家都沉默了。开学第一天 开学了

  • 地板上有水
    她渴了。她得到一杯水。她开始走路。她把玻璃杯掉了。地板上有水。这个 水坑很大。她有拖把。她把水擦掉。地板是白色的 清洁的她又喝了一杯水。她喝了。她很高兴

  • 保姆
    凯西想要一辆新车。她需要钱。她决定照看孩子。她照顾孩子。她喂他吃午饭。她读书 给他讲个故事。这个故事很有趣。孩子笑了。凯西喜欢他。 孩子的妈妈回家了。孩子亲吻凯西。凯西离开了。她 我会再照顾他

  • 5.医生
    萨姆是一名医生。他照顾人。他对他们微笑。他给他们药。他给年轻人贴标签 患者。年轻的病人喜欢他。他们在家的时候看见他了 生病的他让他们感觉好多了。这让他很高兴。他爱他的孩子 工作。他自豪地回家

    正如你所看到的,这很容易。但是一开始,对于一个刚开始学习英语的人来说,这并不容易

    所以我的想法是这样的。我想要一个脚本,可以在bashperl中,我认为perl更好,该脚本可以阅读大量我拥有的短篇故事,并且对于每一个独特的作品,它都会在适当的位置对单词进行编号

    例如,在我上面提到的上下文中,我想要如下内容:

    他醒来了。他看见太阳升起。他刷牙他的牙齿是白色的他穿上衣服。。。等等

    这里第一个他是唯一的,所以将其编号为1。
    直到内容的结尾,“他”一词被忽略,等等。 然后脚本对第二个单词执行此操作,如果它是唯一的,则对其进行编号,否则忽略它

    另外,段落和每一行都不能漏掉,因为我每天都在纸上打印出来阅读

    为了完成这个想法供其他人使用,我需要从脚本解析的一个单词中建立一个数据库,这样我就可以在100篇短篇小说之后看到我读过的单词。
    使用这个数据库忽略我想读的新短篇小说中重复的单词

    我为什么要这样做?因为这有助于我了解我读过的单词和没有读过的单词。对其他人来说,这也是一个很好的方法,这样他们就可以轻松地学习英语。请帮助我发展这个想法,如果你看到我的想法有什么不好的地方,或者如果你知道类似的想法,就像这样,请告诉我

    总之,我想要的内容是每个单词只编号一次

    对不起,伙计们,我想打印内容,但不要遗漏段落。请看照片

    如你所见,我必须在新的短篇小说中划掉新词,以便将来阅读。脚本必须像往常一样打印带有编号的段落,这样我就可以保存它,然后打印出来在纸上阅读

    我想这样做:
    $script my_context.txt>new_context.txt

    然后我可以把它打印出来

    如果你看到我的写作有错误,我很抱歉。如果你不理解我的想法,请发表评论,以便我把它解释得更详细


    非常感谢

    Python中的一个快速而肮脏的解决方案

    story = 'He wakes up. He sees the sun rise. He brushes his teeth are white He puts on his clothes. His shirt is blue. His shoes are yellow. His pants are brown. He goes downstairs. He gets a bowl. He pours some milk and cereal. He eats. He gets the newspaper. He reads.'
    
    already_seen = set()
    count = 0
    my_story_string = ''
    for word in story.split():
        if word not in already_seen:
            count += 1
            res = " ".join([str(count), word])
            print(word_number_tuple)
            already_seen.add(word)
        else:
            res = word
            print(word)
        my_story_string += ' ' + res
    
    >>> my_story_string
    ' 1 He 2 wakes 3 up. He 4 sees 5 the 6 sun 7 rise. He 8 brushes 9 his 10 teeth 11 are 12 white He 13 puts 14 on his 15 clothes. 16 His 17 shirt 18 is 19 blue. His 20 shoes are 21 yellow. His 22 pants are 23 brown. He 24 goes 25 downstairs. He 26 gets 27 a 28 bowl. He 29 pours 30 some 31 milk 32 and 33 cereal. He 34 eats. He gets the 35 newspaper. He 36 reads.'
    
    #/usr/bin/perl
    严格使用;
    使用警告;
    我的@words==~/(\w+)/g;
    我看到的百分比;
    我的$count=1;
    foreach我的$value(@words){
    if(!$seen{$value}){
    打印“$count.$value”;
    $SEED{$value}=1;
    }
    否则{
    打印“$value”;
    }
    $count++;
    }
    __资料__
    他醒了。他看见太阳升起。他刷牙,牙齿是白色的,他穿上衣服。他的衬衫是蓝色的。他的鞋子是黄色的。他的裤子是棕色的。他下楼去了。他得到一个碗。他倒了一些牛奶和麦片粥。他吃东西。他拿到了报纸。他读书。
    

    awk
    救援

    $ awk -v RS=" +" -v ORS=" " '{key=$0;gsub(/[^A-Za-z]/,"",key); 
                                  if(key in a)print $0;
                                  else{a[key];print ++c"."$0}}' file
    
    他醒来了。他看见太阳升起。他刷牙。他的牙齿是白色的。他穿上衣服。他的衬衫是蓝色的。他的20.5英寸的鞋子是21.5英寸的黄色。他的裤子是棕色的。他下了楼。他得到了26.27分,一个28.5分的碗。他倒了一些牛奶和谷类食品。他吃东西。他拿到了35.5英镑的报纸。他读书

    您还可以通过更改键使其不区分大小写,就像我过滤非字母字符时所做的那样

    $ cat script.txt 
    BEGIN {RS=" "; ORS=" "}       # the record is a word
    {
        key=$0                    # separate key to clean it up
        gsub(/[^a-zA-Z]/,"",key)  # remove ".," etc.
        key=tolower(key)          # and capitals
        if(!(key in a)) {         # if not seen before
            print ++i; a[key]     # print the running number
        }
    } 1                           # and the word
    
    <
    $ cat script.txt 
    BEGIN {RS=" "; ORS=" "}       # the record is a word
    {
        key=$0                    # separate key to clean it up
        gsub(/[^a-zA-Z]/,"",key)  # remove ".," etc.
        key=tolower(key)          # and capitals
        if(!(key in a)) {         # if not seen before
            print ++i; a[key]     # print the running number
        }
    } 1                           # and the word
    
    $ awk -f script.awk short_story_in_2_paragraphs.txt
    
    BEGIN {RS=" "; ORS=" "}              # the record is a word
    NR==FNR {a[$0]; next}                # read the database of words into memory
    {
        key=$0                           # separate key to clean it up
        gsub(/[^a-zA-Z]/,"",key)         # remove ".," etc.
        key=tolower(key)                 # and capitals
        if(!(key in a)) {                # if not seen before
            print ++i; a[key]            # print the running number
            print key >> "database.txt"  # append word to database
        }
    } 1                                  # and the word
    
    $ awk -f script2.awk database.txt story.txt
    
    $ echo -n a\  > database.txt