关于#txt文件#的问题,如何解决?

现在有这样一个source1.txt的文件,这里是文件内容:

23.8, 35.6 ,44.,99,60.1 ,77 ,68 ,88.88, 90, 97,

99.9, 89.6 ,91.11, 95, 90, 100, 85 ,90.55, 60.1,

77.8, 68, 88.88, 90, 94.9,

希望你来对数据进行排序(保留一位小数),

然后再将结果写入一个txt文件(例如文件名为:winner.txt)。

运行结果:

原数据:
['23.8', ' 35.6 ', '44.', '99', '60.1 ', '77 ', '68 ', '88.88', ' 90', ' 97', '\n99.9', ' 89.6 ', '91.11', ' 95', ' 90', ' 100', ' 85 ', '90.55', ' 60.1', '\n77.8', ' 68', ' 88.88', ' 90', ' 94.9', '']
排序数据:
[23.8, 35.6, 44.0, 60.1, 60.1, 68.0, 68.0, 77.0, 77.8, 85.0, 88.88, 88.88, 89.6, 90.0, 90.0, 90.0, 90.55, 91.11, 94.9, 95.0, 97.0, 99.0, 99.9, 100.0]
写入文件的数据:
['23.8,35.6,44.0,60.1,60.1,68.0,68.0,77.0,77.8,85.0,88.88,88.88,89.6,90.0,90.0,90.0,90.55,91.11,94.9,95.0,97.0,99.0,99.9,100.0,']
'''

with open('source1.txt') as ff:
    res = map(lambda x: x.strip(), ff.read().replace("\n", '').split(','))
    res = list(res)
    print('原数据')    
    print(res)
    print('排序数据')
    result = sorted(map(lambda x: round(float(x), 1), res))
    print(result)
with open( 'winner.txt', 'w') as ff:
    print("写入文件的数据")
    s =  ','.join(map(lambda x: f'{x:.1f}', result))
    print([s])
    ff.write(s)
--result
原数据
['23.8', '35.6', '44.', '99', '60.1', '77', '68', '88.88', '90', '97', '99.9', '89.6', '91.11', '95', '90', '100', '85', '90.55', '60.1', '77.8', '68', '88.88', '90', '94.9']
排序数据
[23.8, 35.6, 44.0, 60.1, 60.1, 68.0, 68.0, 77.0, 77.8, 85.0, 88.9, 88.9, 89.6, 90.0, 90.0, 90.0, 90.5, 91.1, 94.9, 95.0, 97.0, 99.0, 99.9, 100.0]
写入文件的数据
['23.8,35.6,44.0,60.1,60.1,68.0,68.0,77.0,77.8,85.0,88.9,88.9,89.6,90.0,90.0,90.0,90.5,91.1,94.9,95.0,97.0,99.0,99.9,100.0']

# 读取文件内容
with open("source1.txt", "r") as f:
    data = f.read()

# 将文件内容拆分成数字
data = data.split(",")

# 去除字符串前后的空白字符并转换为浮点数
data = [float(x.strip()) for x in data]

# 对数字进行排序
data = sorted(data)

# 保留一位小数
data = [round(x, 1) for x in data]

# 将排序后的数字转换为字符串
data = [str(x) for x in data]

# 将字符串拼接成一行
data = ",".join(data)

# 写入文件
with open("winner.txt", "w") as f:
    f.write(data)

望采纳


import os

file_path = "Annotations"
# os.listdir(file)会历遍文件夹内的文件并返回一个列表
path_list = os.listdir(file_path)
# print(path_list)
# 定义一个空列表,我不需要path_list中的后缀名
path_name=[]
# 利用循环历遍path_list列表并且利用split去掉后缀名
for i in path_list:
    path_name.append(i.split(".")[0])

# 排序一下
path_name.sort()

for file_name in path_name:
    # "a"表示以不覆盖的形式写入到文件中,当前文件夹如果没有"save.txt"会自动创建
    with open("save.txt","a") as f:
        f.write(file_name + "\n")
        # print(file_name)
    f.close()

with open('source.txt','r+') as f:
    string = f.read()     #读取文件内容

    data_list = string.split(",")    #用逗号将字符串分隔为列表,也就是元数据

    #打印元数据列表
    print("元数据:")
    print(data_list)

    #去掉换行符
    for i in range(len(data_list)):
        data_list[i] = data_list[i].replace("\n","")

    data_list.remove('')  #去掉空字符

    #将列表中的字符转换成数字
    for i in range(len(data_list)):
        data_list[i] = float(data_list[i])

    data_list.sort()   #对列表进行排序
    
    print("排序数据:")
    print(data_list)

    #将排序好的数字列表转换成字符列表
    #将列表中的字符转换成数字
    for i in range(len(data_list)):
        data_list[i] = str(data_list[i])
    
    #将列表拼接为字符
    string = ",".join(data_list)
    print("写入文件的数据:")
    print([string])

    with open('winner.txt','w') as f1:
        f.write(string)