python替换txt文件中固定内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python替换txt文件中固定内容相关的知识,希望对你有一定的参考价值。

大佬们,跪求“python读取txt文件,查找到指定内容,并作出修改,保存该文本文件”代码,急求、、、

    读取之后使用字符串的 replace方法,之后 save 到 txt 即可

    使用pandas 读取文件,循环遍历每个元素,利用条件判断

    使用pandas读取文件, 使用apply方法,还是使用 字符串的replace方法

    使用正则表达式模块re, 使用re的 substring 方法或者replaece方法

参考技术A 直接用replace方法不可以?

如何在文件中固定数量的字符后插入换行符

【中文标题】如何在文件中固定数量的字符后插入换行符【英文标题】:How to insert a new line character after a fixed number of characters in a file 【发布时间】:2010-11-14 07:08:26 【问题描述】:

我正在寻找一个 bash 或 sed 脚本(最好是单行),我可以使用它在巨大的文本文件中的固定数量的字符之后插入一个换行符。

【问题讨论】:

***.com/questions/525592/… 的骗子还有很多很多 我不同意这里的欺骗评论,尼尔:这不是一个简单的搜索和替换,就像你链接中的问题一样...... 【参考方案1】:

因为我不能直接评论(降低声誉)对上层 cmets 的新提示:

我更喜欢 sed 命令(正是我想要的)并且还测试了 Posix-Command fold。但是对于原始问题,两个命令之间存在一些差异: 如果您有一个包含 n*bytes 记录的平面文件(没有任何换行符)并使用 sed 命令(以字节为数字(@Kristian 的答案中为 20)),如果您有 n 行用 wc 计数。如果你使用 fold 命令,你只有 n-1 行带有 wc! 这个区别有时很重要,如果你的输入文件不包含任何换行符,你会在最后一行之后得到一个 sed 而没有一个 fold

【讨论】:

【参考方案2】:

让 N 是一个 shell 变量,表示您想要换行符之后的字符数。如果您想跨行继续计数:

perl -0xff -pe 's/(.'$N')/$1\n/sg' input

如果要重新开始对每一行进行计数,请省略 -0xff 参数。

【讨论】:

【参考方案3】:

这可能对你有用:

echo aaaaaaaaaaaaaaaaaaaax | sed 's/./&\n/20'
aaaaaaaaaaaaaaaaaaaa
x

【讨论】:

实际上只适用于第一行(例如,在 20 个字符后插入换行符然后退出)。不适合“巨大的文本文件”。【参考方案4】:

在正好有 42 个字符的行之后添加一个空行

sed -ie '/^.\42\$/a\
' huge_text_file

【讨论】:

我认为 sed 在命令行上使用时通常没有-i 标志会更好,因为如果在编写命令时输入错误,您不会意外地用不需要的输出覆盖原始文件。我觉得答案至少应该警告人们 -i 做了什么,以防他们不熟悉 sed 并且不先检查他们使用的标志。【参考方案5】:

这样的事情怎么样? change 20 是换行符前的字符数,temp.text 是要替换的文件..

sed -e "s/.\20\/&\n/g" < temp.txt

【讨论】:

如果文件包含“~”字符则失败 这会在 20 个字符(每行原始字符)之后插入一个换行符。如果原始文件不包含换行符,并且您只希望在前 20 个字符之后有一个换行符,请在末尾省略“g”(全局)。如果你想要这个并且原始文件包含换行符,你将不得不使用不同的解决方案。 我遇到了同样的问题,但是在 OSX 中它插入了一个“n”而不是换行符?我检查了其他有同样问题的帖子,但我不明白如何解决?请问有人吗? @JM88,Unix/Linux 使用换行符 (\n) 换行。 Mac 使用回车符换行 (\r),Windows 使用两者的组合 (\r\n) 换行。将命令更改为sed -e "s/.\20\/&amp;\r/g" &lt; temp.txt,你应该得到你需要的。另请参阅this Stack-O 和this blog。 许多 sed 实现将所选字符数限制为 255。更喜欢 Steven Penny 的回复。【参考方案6】:

如果您想在整个文件的多个字符之后插入换行符,例如在整个文件的第 30 个字符之后

gawk 'BEGIN FS=""; ch=30

    for(i=1;i<=NF;i++)
        c+=1
        if (c==ch)
            print "" 
            c=0           
        else
            printf $i
        
    
    print ""
' file

如果您的意思是在每行中插入特定数量的字符,例如在每 5 个字符之后

gawk 'BEGIN FS=""; ch=5

    print substr($0,1,ch) "\n" substr($0,ch)
' file

【讨论】:

以上是关于python替换txt文件中固定内容的主要内容,如果未能解决你的问题,请参考以下文章

读取具有不同列宽但在 R 中固定分隔符的文本文件

python打开一个文件并替换内容[重复]

linux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中?

python将指定文本中的字符串替换后,生成新的文本文件。

BAT读取TXT文本中指定行的内容

python文本内容替换?