猿问

您如何为文本文件编号,但在再次计数之前还要重复每个数字 x 次?

我有一个列表(list.txt),其中包含如下名称:James Heather Daniel Peter


这份名单最多有 100 人,我的目标是给前 3 (x) 个“1”编号。接下来的 3 (x) '2'。等等。


我设法给每个人编号,但数字按预期增加,没有重复。


最好我想将列表打印到 Groups.txt 中以保持原始列表不变,以便我以后可以更改组的大小 (k)。


我试图以某种方式将以下代码实现到以下代码中:


 res = list(itertools.chain.from_iterable(itertools.repeat(y, 3) for y in c))

或者


 res = [ele for ele in c for i in range(k)]

但它没有用。


f = open('list.txt', 'w')

c = open('Groups.txt')

x = 3

for index, value in enumerate(c, 1):

    f.write("{}.{}".format(index, value))

f.close()

这里又是我希望输出的内容:1.James


1.希瑟


1.丹尼尔


1.彼得


2.弗兰克


2.山姆


2.杰夫


...ETC



桃花长相依
浏览 101回答 3
3回答

千万里不及你

f = open('list.txt', 'w')c = open('test.txt')lines = c.readlines()counter = 0for i in range(len(lines)):    if i%3 == 0:        counter+=1    f.write("{}.{}".format(counter, lines[i]))f.close()这就是你想要的。它完全按照你说的那样工作。

精慕HU

只需使用index // group_sizeas 键即可满足您的需求:f = open('list.txt', 'w')c = open('Groups.txt')group_size = 3for index, value in enumerate(f, group_size):    f.write("{}.{}".format(index // group_size, value))f.close()

倚天杖

不是最直接的方法,但至少它有效:string = 'James Heather Daniel Peter Frank Sam Jeff'string_list = string.split() #Turn string into listk = 3 #Group sizeneeded_numbers =range(int(np.ceil(len(string_list)/k))) #Divide len by k and round upwardsnumbers_list = [y+1 for x in needed_numbers for y in (x,)*k] #Get list of numbersprint('\n'.join([f'{i}.{j}' for j,i in zip(string_list,numbers_list)])) #Join both输出:1.James1.Heather1.Daniel2.Peter2.Frank2.Sam3.Jeff您可以将 print 函数中的内容保存到 txt 文件中:with open('Groups.txt', 'w') as g:    g.write('\n'.join([f'{i}.{j}' for j,i in zip(string_list,numbers_list)]))
随时随地看视频慕课网APP

相关分类

Python
我要回答