Python 文件操作
我有一个文件,里面的内容像这样:
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实现这个的,可能会得到更多的帮助。