如何在python中替换“.txt”文件的每行的第一个数字?

查看此图像以获取示例.txt文件,在此文件的每一行上,我想将0替换为1,我也想保存具有相同名称的文件。


查看此图像以获取示例.txt文件,在此文件的每一行上,我想将0替换为1,我也想保存具有相同名称的文件。

my code:-

这段代码正在工作,并给了我想要的结果。有人可以建议一种更简单的方法吗?


import os 

def process_line_item(x):

    index = x[0]

    line_str = x[1]

    new_first_value = [str(1)]

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

    

for filename in os.listdir(os.getcwd()):

    if filename.endswith(".txt"):

        data = None

        with open('{}' .format(filename), 'r') as file:

            data = file.read() 

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

            with open('{}' .format(filename), 'w') as file_out:

                file_out.write(new_data)


holdtom
浏览 399回答 5
5回答

慕码人2483693

只是对@Itachi的答案的更正,这对我有用。find . -type f -name "*.txt" | xargs -I{} sed -i 's/0/1/' {}

明月笑刀无情

import osimport refor filename in os.listdir(os.getcwd()):    if filename.endswith(".txt"):        with open('{}'.format(filename), 'r+') as file:            data = file.read()            new_data = re.sub(r'^0','1',data,flags=re.MULTILINE)             file.seek(0)            file.truncate()             file.write(new_data)            file.close()

SMILET

import osfor filename in os.listdir(os.getcwd()):    if filename.endswith(".txt"):            with open('{}' .format(filename), 'r+') as file:                lines = file.readlines()                file.seek(0, 0) #set the pointer to 0,0 cordinate of file                for line in lines:                    row = line.strip().split(" ")                    if not int(row[0]):                        row[0] = '1'                        print(row)                        file.write(" ".join(row) + "\n")我认为代码非常简单,但如果你想让我解释,请告诉我。

温温酱

TLDR:find . -type f -name "*.txt" | xargs -I{} sed -i '' 's/0/1/' {}详细:步骤:查找所有目标文件:。find . -type f -name "*.txt"sed是一把瑞士刀,用于替换指定文件的字符串,正则表达式参数与第一个匹配项匹配,并根据需要将其替换为 ,表示覆盖原始文件。's/0/1/'01-i ''xargs用于将文件结果解析为每个文件,并以递归方式将其作为 stdin 传递给。sed做! 命令做这些类型的任务很棒!shell顺便说一句,欢迎来到堆栈溢出!

胡子哥哥

您可以使用“r +”打开文件以一次性读取和写入。import osdef process_line_item(x):    index = x[0]    line_str = x[1]    new_first_value = [str(1)]    return ' '.join(new_first_value + x[1].split(' ')[1:])for filename in os.listdir(os.getcwd()):    if filename.endswith(".txt"):        data = None        with open('{}'.format(filename), 'r+') as file:            data = file.read()            new_data = '\n'.join(list(map(process_line_item, enumerate(data.split('\n')))))            file.write(new_data)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python