Python 文件操作

0 投票
4 回答
1330 浏览
提问于 2025-04-15 19:56

我有一个文件,里面的内容像这样:

26 1
33 2
……

还有另一个文件,里面是英文句子。

我需要写一个脚本,来打印第26句的第一个单词和第33句的第二个单词。请问我该怎么做呢?

4 个回答

0

主要的问题是你需要决定什么算作“句子”。比如说,一个 '.' 是句子的结束吗?还是说它可能是某个缩写的一部分,比如我刚才用的那个?其次,稍微简单一点的是,什么算作“单词”,比如“TCP/IP”算一个单词,还是两个单词?

一旦你把这些规则定义清楚了,就可以很容易地把文本文件读成一个“句子”的列表,而每个“句子”又是一个“单词”的列表。接着,你可以把另一个文件当作一系列数字对来读取,然后用这些数字作为索引,去查找整个列表和里面的子列表。但句子和单词的划分问题才是真正难的部分。

2

下面的代码应该可以完成这个任务。假设文件不是太大。你可能需要做一些修改来处理一些特殊情况(比如双空格等等)。

# Get numers from file
num = []
with open('1.txt') as file:
    num = file.readlines()

# Get text from file    
text = []
with open('2.txt') as file:
    text = file.readlines()

# Parse text into words list.
data = []
for line in text:                    # For each paragraoh in the text
    sentences = l.strip().split('.') # Split it into sentences
    words = []
    for sentence in sentences:       # For each sentence in the text
        words = sentence.split(' ')  # Split it into words list
        if len(words) > 0:
            data.append(words)

# get desired result
for i = range(0, len(num)/2):
     print data[num[i+1]][num[i]]
1

这里有个大致的步骤:

  • 把第一个文件里的内容读进一个列表(每个元素是一个数字)
  • 把第二个文件里的内容读进另一个列表(每个元素是一句话)
  • 遍历数字列表,对于每个数字找到对应的句子,并打印出相关的单词

现在,如果你能展示一下你是怎么尝试用Python实现这个的,可能会得到更多的帮助。

撰写回答