英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号“:”分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字
时间: 2023-05-01 12:04:41 浏览: 259
这道题目要求按照一定的方式对英文电影中演员名单进行排序显示。首先要给定一个未排序版本的文件listin.txt,每行参演人员名单由逗号分隔。接着,需要以冒号为分隔符将每行参演人员名单分隔成前后两部分,然后根据一定的规则对前半部分的参演人员名单进行排序,最后再按照冒号分隔符的方式将前后两部分拼接起来并输出到终端上。需要注意的是,排序时用到的规则有些复杂,需要对空格和水平制表符之外的其他字符进行忽略处理。
相关问题
英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中: 1.从标准输入整数,作为排版后所有各行冒号在一行中的固定位置,输入的整数肯定大于排版后所有各行冒号前的字符个数,位置从1开始计数; 2.冒号左边的单词串以行头为基准左对齐,左边的最后一个单词与冒号之间以空格填充;冒号右边的单词串以冒号基准左对齐,最后一个单词后只有回车换行符,不再有其它字符; 3.冒号左右两边的单词间都只有一个空格分隔,并且要求冒号两边至少各有一个空格。 假设输入文件中每行字符个数不超过100。 【输入形式】 待排版的参演人员名单从当前目录下的listin.txt文件中读入,表示冒号位置的整数从标准输入读入。
题目要求对一个英文电影中的参演人员名单进行排序显示,要求将未排序的文件listin.txt中的每行参演人员名单按照整数升序排列,每行参演人员名单中的冒号“:”分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其他字符构成)间可能有多个空格或制表符分隔,先用标准输入读入未排序的文件listin.txt,然后按如下要求编写程序,将其按照规则排好序输出到另外一个文件listout.txt中:
1. 从标准输入整数,作为排序后所有行冒号“:”之前的整数为基准左右对齐,输入的整数肯定大于排序后所有行基准前的整数,计数从1开始;
2. 冒号左边的单词串以行头为基准左对齐,右边的单词串以行尾为基准右对齐,行的总长度则为基准左边的整数和右边的单词串长度加至少一个空格的长度,并在其间按空格左对齐排列。
3. 冒号两边的单词串之间只有一个空格,两端均无空格。
需要注意的是,输入文件中每行的字符数目不能超过100。
具体实现策略如下:
1. 将文件读入,逐行读入每个人员名单,并统计每个名单前面的数字。
2. 将名单以冒号分割并去除空格存入一个字典中.
3. 将数字和名单分别存入两个列表中,并将它们压成一个元组列表.
4. 对元组列表进行排序后,将排序后的内容以所需格式写入listout.txt文件中.
用python实现 【问题描述】 英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号":"分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中: 1.从标准输入读取一整数,作为排版后所有各行冒号":"在一行中的固定位置;假设输入的整数肯定大于排版后所有各行冒号":"前的字符个数,位置从1开始计数; 2.冒号":"左边的单词串以行头为基准左对齐,左边的最后一个单词与冒号之间以空格填充;冒号":"右边的单词串以冒号":"为基准左对齐,最后一个单词后只有回车换行符,不再有其它字符; 3.冒号":"左右两边的单词间都只有一个空格分隔,并且要求冒号两边至少各有一个空格。 假设输入文件中每行字符个数不超过100。 【输入形式】 待排版的参演人员名单从当前目录下的listin.txt文件中读入;表示冒号":"位置的整数从标准输入读入。 【输出形式】 排版后的参演人员名单输出到当前目录下的listout.txt中。 【输入样例】 假设文件listin.txt内容为: Digital Intermediate by : EFILM Supervising Digital Colorist : STEVEN J. SCOTT Second Colorist :ANDREW FRANCIS Digital Intermediate Producer:LOAN PHAN Digital Intermediate Editor: DEVON MILLER 表示冒号固定位置的整数为: 40 【输出样例】 文件listout.txt中的内容应为: 【样例说明】 输入的文件listin.txt中有五行参演人员名单,要求排版后冒号":"位于第40个字符的位置,按照上述排版规则输出到文件listout.txt中。
以下是Python实现代码:
```python
# 读取输入文件
with open('listin.txt', 'r') as f:
lines = f.readlines()
# 读取冒号位置
pos = int(input().strip())
# 格式化输出到输出文件
with open('listout.txt', 'w') as f:
for line in lines:
# 将每行按冒号分成左右两部分
left, right = line.strip().split(':')
# 左对齐并填充空格
left = left.strip().ljust(pos - 1)
# 右对齐
right = right.strip().rjust(len(line) - pos)
# 输出到文件
f.write('{} :{}\n'.format(left, right))
```
这段代码首先读取输入文件中的每一行,然后读取冒号的位置,接着按照规则将每一行排版后输出到输出文件中。具体步骤如下:
1. 将每一行按冒号分成左右两部分。
2. 左边的部分左对齐并填充空格,填充的空格数量为冒号位置减去左边部分的长度再减一(因为还需要一个空格与冒号隔开)。
3. 右边的部分右对齐,右对齐的长度为整行长度减去冒号位置。
4. 将左右两部分按照规则输出到输出文件中。
注意,这里用到了Python字符串的一些方法,如`rstrip()`、`ljust()`和`rjust()`等,需要熟悉这些方法的使用。
阅读全文