如何从一个数字文件和该数字前面的单词创建对?

时间:2019-02-03 21:04:01

标签: python python-3.x file text

我正在一个新项目上,分配给我的团队全部是Python。我不太精通Python,所以我认为应该向stackoverflow寻求帮助。我在项目中的一部分是编写一个程序,该程序读取一个文本文件,并根据在文件中找到的所有内容(即数字和该数字之前的单词)创建对。我唯一要做的就是获取程序以读取文本文件并打印整个内容。但是我不知道如何让它吐出数字对和它前面的单词。任何帮助表示赞赏!谢谢。

文本文件内容示例:

I have 3 apples.
The apples were very good.
I ate 7 bananas.
The bananas were just as good.

所需的输出:

have, 3
ate, 7

到目前为止,我的代码:

in_file = open("FILE.txt", "rt")  
contents = in_file.read()       
in_file.close()                  
print(contents)

(发送对数的逻辑和表示其的单词)

3 个答案:

答案 0 :(得分:1)

您应该使用正则表达式:

import re

with open('FILE.txt', 'r') as in_file:
    contents = in_file.read()

pairs = re.findall(r'(\w+)\s+(\d+)', contents)
print(pairs)

输出:

[('have', '3'), ('ate', '7')]

模式的演示:https://regex101.com/r/bZzlJs/1

如果您希望使用int代替数字的字符串,则可以

pairs = [(word, int(num)) for word, num in re.findall(r'(\w+)\s+(\d+)', contents)]

答案 1 :(得分:0)

尝试这样的事情:

type DeepPartial<T> = {
  [P in keyof T]?: T[P] extends (infer U)[]
  ? DeepPartial<U>[]
  : T[P] extends ReadonlyArray<infer U>
      ? ReadonlyArray<DeepPartial<U>>
      : DeepPartial<T[P]>
};

答案 2 :(得分:0)

因此,我将文件读取的所有行作为一个字符串读取。用空格替换“ \ n” 然后我可以在每个空格处将其拆分为每个单词。然后通过遍历拆分词的任何时间都是正整数,我将其及其前一个词打印出来。 (我在行的开头而不是文件的开头处理整数)

with open("FILE.txt","r") as f:    
    s = f.read()
    s = s.replace("\n"," ")
    s = s.split(" ")
    for k in range(s.length()):
        if(s[k].isdigit()):
            print(s[k-1],s[k])

注意:isdigit仅在数字为正数且不存在小数的情况下有效,请尝试处理小数