python英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号":"分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中: 1.从标准输入读取一整数,作为排版后所有各行冒号":"在一行中的固定位置;假设输入的整数肯定大于排版后所有各行冒号":"前的字符个数,位置从1开始计数; 2.冒号":"左边的单词串以行头为基准左对齐,左边的最后一个单词与冒号之间以空格填充;冒号":"右边的单词串以冒号":"为基准左对齐,最后一个单词后只有回车换行符,不再有其它字符; 3.冒号":"左右两边的单词间都只有一个空格分隔,并且要求冒号两边至少各有一个空格。 假设输入文件中每行字符个数不超过100。
时间: 2024-02-25 10:55:37 浏览: 151
以下是一个实现该功能的Python程序:
```python
# 读取固定位置
pos = int(input())
# 打开输入和输出文件
with open('listin.txt', 'r') as fin, open('listout.txt', 'w') as fout:
# 逐行读取输入文件
for line in fin:
# 去掉行末换行符
line = line.rstrip('\n')
# 分隔冒号两侧的单词串
words = line.split(':')
# 左侧单词串左对齐并填充空格
left_aligned = words[0].strip().ljust(pos) + ' ' + words[0].split()[-1] + ' : '
# 右侧单词串左对齐并加上换行符
right_aligned = words[1].strip() + '\n'
# 将左右两侧的单词串拼接成一行并写入输出文件
fout.write(left_aligned + right_aligned)
```
该程序首先读取输入的固定位置,然后逐行读取输入文件,并对每行进行排版操作。对于每行,程序首先使用冒号将其分隔成左右两部分,然后对左右两侧的单词串进行排版。左侧单词串使用`strip()`方法去掉首尾空格,并使用`ljust()`方法左对齐并填充空格,同时再加上冒号和一个空格。右侧单词串使用`strip()`方法去掉首尾空格,并加上换行符。最后,将左右两侧的单词串拼接成一行并写入输出文件。
阅读全文