为了账号安全,请及时绑定邮箱和手机立即绑定

如何替换文本文件中每行空格前的第一个数字

如何替换文本文件中每行空格前的第一个数字

叮当猫咪 2021-12-08 10:21:08
我的文件如下所示:12.32 1:34 2:49 5:21 29:9813.53 1:23 2:82 5:23 29:4551.92 1:23 2:54 5:54 29:6312.42 1:34 2:43 5:32 29:32我试图用另一个数字替换每行中的每个第一个数字。所以输出会像21.33 1:34 2:49 5:21 29:9816.23 1:23 2:82 5:23 29:4593.12 1:23 2:54 5:54 29:6318.76 1:34 2:43 5:32 29:32 什么是好的方法?我试着指向号码with open('file.txt', 'r') as file:    line = file.readline()    line[0]但它只给了我第一个字符,而不是整个数字。非常感谢!
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您可以使用以下方法来实现这一点:-


data = None

with open('file.txt', 'r') as file:

    data = file.read()


def process_line_item(x):

    index = x[0]

    line_str = x[1]

    new_first_value = [str(x[0])] # you can put here new value depending on line index

    return ' '.join(new_first_value + x[1].split(' ')[1:])


new_data = '\n'.join(list(map(process_line_item, enumerate(data.split('\n')))))


with open('new_file.txt', 'w') as file:

    file.write(new_data)

file.txt


12.32 1:34 2:49 5:21 29:98

13.53 1:23 2:82 5:23 29:45

51.92 1:23 2:54 5:54 29:63

12.42 1:34 2:43 5:32 29:32

new_file.txt


0 1:34 2:49 5:21 29:98

1 1:23 2:82 5:23 29:45

2 1:23 2:54 5:54 29:63

3 1:34 2:43 5:32 29:32


查看完整回答
反对 回复 2021-12-08
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以使用该csv模块delimiter=" ":


from csv import reader


with open('file.txt', 'r') as file:

    csv_reader = reader(file, delimiter=" ")

    for row in csv_reader:

        row[0] = '??.??'

        print(row)

哪个输出


['??.??', '1:34', '2:49', '5:21', '29:98']

['??.??', '1:23', '2:82', '5:23', '29:45']

...

请注意,您的数字将是字符串。您可能需要将它们转换为浮点数:


floats = [float(item) for item in row]

如果您需要将更改写入文件,您可以类似地使用csv.writer.


查看完整回答
反对 回复 2021-12-08
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

这段代码应该可以解决问题,但是它可能有点错误,可能需要稍微调整和测试。我希望它有帮助。


with open('file.txt', 'r') as file:

    file_content = file.read()

    list_content = [letter for letter in file_content]

    num_length = 0

    for i, char in enumerate(list_content):

        num_length += 1

        if list_content[i - 1] == '\n':

            num_length = 0


        elif char == ' ':

            start_index = i - num_length

            for _ in range(num_length + 1):

                list_content.pop(start_index)


            list_content.insert(start_index, your_new_number)


    out_text = ''.join(list_content)


with open('file.txt', 'w+') as file:

    file.write(out_text)


查看完整回答
反对 回复 2021-12-08
  • 3 回答
  • 0 关注
  • 277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信