我正在一个新项目上,分配给我的团队全部是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)
答案 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仅在数字为正数且不存在小数的情况下有效,请尝试处理小数