GVKun编程网logo

使用Python在文本文件中查找和替换(python 文本查找替换)

9

在本文中,我们将带你了解使用Python在文本文件中查找和替换在这篇文章中,我们将为您详细介绍使用Python在文本文件中查找和替换的方方面面,并解答python文本查找替换常见的疑惑,同时我们还将给

在本文中,我们将带你了解使用Python在文本文件中查找和替换在这篇文章中,我们将为您详细介绍使用Python在文本文件中查找和替换的方方面面,并解答python 文本查找替换常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Linux在所有文件中查找和替换、php – 在多个文件中查找和替换、Python 2.7-使用字典从文本文件中查找并替换为新的文本文件、Python-从文本文件中查找行号

本文目录一览:

使用Python在文本文件中查找和替换(python 文本查找替换)

使用Python在文本文件中查找和替换(python 文本查找替换)

我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序仅接受以空格或制表符分隔的文本文件,但是此文本文件以分号分隔。我要从(Arcmap)导出文本文件的程序中没有选项来更改分隔,并且在文本文件本身中进行查找和替换实际上需要2天。

我已经搜索了一个脚本来执行此操作,但是它们似乎都用空格替换了单词文件的整个LINE,而不是单独替换了每个分号,而给我留了一个空的文本文件。

这是我的文本文件的示例:

"OID_";"POINTID";"GRID_CODE";"POINT_X";"POINT_Y";1;-56.000000;200900.250122;514999.750122;2;-56.000000;200900.750122;514999.750122;3;-56.000000;200901.250122;514999.750122;4;-57.000000;200901.750122;514999.750122;5;-57.000000;200902.250122;514999.750122;6;-57.000000;200902.750122;514999.750122;7;-57.000000;200903.250122;514999.750122;8;-57.000000;200903.750122;514999.750122;9;-57.000000;200904.250122;514999.750122;10;-57.000000;200904.750122;514999.750122

我需要它看起来像这样:

1 -56.000000 200900.250122 514999.7501222 -56.000000 200900.750122 514999.750122

答案1

小编典典

这个怎么样:

sed -i ''s/;/ /g'' yourBigFile.txt

这不是Python解决方案。您必须在shell中启动它。但是,如果您使用记事本,我想您在Windows上。所以这里是一个Python解决方案:

f1 = open(''yourBigFile.txt'', ''r'')f2 = open(''yourBigFile.txt.tmp'', ''w'')for line in f1:    f2.write(line.replace('';'', '' ''))f1.close()f2.close()

Linux在所有文件中查找和替换

Linux在所有文件中查找和替换

系统大全为您提供

  经常会碰到这样的情况:查找某个目录下所有包含某个字符串的所有文件,并将这些文件中的这个字符串用另外的字符串替换进行替换。这种情况下,网网要检查的文件比较多,逐一进行检查替换太麻烦,这个时候,我们就应该找一个能够一条命令解决问题的方法。

1、grep命令

grep pattern file.txt命令默认的行为是将file.txt文件中,匹配pattern的行输出到标准输出。这个功能能帮助我们在文件中查找一个字符串出现的上下文,但是并不能够帮助我们实现下一步复杂的操作,所以有必要稍微了解下grep的一些选项。

现在测试文件的内容如下:

$ cat target.txt 

 <a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

text-decoration: none;" href="http://www.asdf.net/scholar/xindong_wu.html">Xindong

" href="http://asdf.net/scholar/Federi

 <a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

 href="http://www.asdf.net/scholar/Gong-Qing_Wu.html">

href="http://asdf.net/scholar/Federico_Bocardi.html">Federico occardi</a><

><span > </span><li display: inline-block; padding-right: 5px; padding-left: 5px;"><a color: rgb(66, 139

为了测试我们将这个文件,另外拷贝出两份,重命名然后放在如下的目录结构中: 

$ tree .

.

├── a

│   └── target1.txt

├── target2.txt

└── target.txt

执行grep命令:

$ grep -rn "http://yyy.xxx.edu.cn" *              

a/target1.txt:1:<a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

a/target1.txt:5: <a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

target2.txt:1:<a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

target2.txt:5: <a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

target.txt:1:<a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

target.txt:5: <a  href="http://yyy.xxx.edu.cn/">Panda Search</a>

grep提供下面的选项:

*就是一般的bash通配符,表示当前目录所有文件,当然,你也可以写某个文件名

-r 是递归查找,意思就是也查找当前目录的子目录中的文件

-n 是显示行号

-i 忽略大小写

-l 列出匹配的文件名

-L 列出不匹配的文件名

-w 只匹配整个单词,而不是字符串的一部分(如只匹配‘man’,包括man两边有符号的如‘.man.’,或者是‘=man=’而不包括‘ woman ’或者是‘ manly ’)

2、Linux其他预备技能 2.1 将命令输出作为参数方式有好多种,这里列出两种:``和$(),下面是一个例子。

$ echo `ls`

a target2.txt target.txt t.tt

$ echo $(ls)

a target2.txt target.txt t.tt

2.2 文件替换sed sed命令的使用参见前面的文章,这里只说用到的地方:

sed -i "s/old/new/g" file1.txt file2.txt 可以将file*.txt中的所有old换成new。如果new什么都没有,就是表示删除old的意思。

3、将上面的技能串起来这样,只需几行,就能够完成所有文件中,指定几种字符串的替换了。当然,也要注意下,sed命令的使用中,当有'/'字符的时候要注意转义,具体如下:

$ sed -i "s

tp://yyy.xxx.edu.cn//g" $(grep -lr "http://yyy.xxx.edu.cn" *)

$ cat target.txt 

<a  href="/">Panda Search</a>

text-decoration: none;" href="http://www.asdf.net/scholar/xindong_wu.html">Xindong

" href="http://asdf.net/scholar/Federi

 <a  href="/">Panda Search</a>

 href="http://www.asdf.net/scholar/Gong-Qing_Wu.html">

href="http://asdf.net/scholar/Federico_Bocardi.html">Federico occardi</a><

><span > </span><li display: inline-block; padding-right: 5px; padding-left: 5px;"><a color: rgb(66, 139

$ sed -i "s

tp://www.asdf.net//g" $(grep -lr "http://www.asdf.net" *)

$ sed -i "s

tp://asdf.net//g" $(grep -lr "http://asdf.net" *)        

$ cat target.txt 

<a  href="/">Panda Search</a>

text-decoration: none;" href="/scholar

dong_wu.html">Xindong

" href="/scholar/Federi

 <a  href="/">Panda Search</a>

 href="/scholar/Gong-Qing_Wu.html">

href="/scholar/Federico_Bocardi.html">Federico occardi</a><

><span > </span><li display: inline-block; padding-right: 5px; padding-left: 5px;"><a color: rgb(66, 139

$

看到这里,或许你也明白我要做什么了。其实,是这样的,一位童鞋往我们线上的系统中加了几个静态网页,网页中用到的超链全部是直接从浏览器复制过来的,包括站内的跳转。这样明显不科学,尽管当时是没毛病,但是现在我们的域名要换了,问题就来了,这些老域名的跳转链接都不能访问了。为了根治这个问题,我决定将这些站内跳转的域名部分全部 

  以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。 

 

本文来自系统大全http://www.win7cn.com/如需转载请注明!推荐:win7纯净版

php – 在多个文件中查找和替换

php – 在多个文件中查找和替换

好吧,最好的解决方案是在PHP中搜索一堆文件内容以获取某个字符串并将其替换为其他内容.

完全像记事本如何做,但显然我不需要接口.

foreach (glob("path/to/files/*.txt") as $filename)
{
    $file = file_get_contents($filename);
    file_put_contents($filename,preg_replace("/regexhere/","replacement",$file));
}

Python 2.7-使用字典从文本文件中查找并替换为新的文本文件

Python 2.7-使用字典从文本文件中查找并替换为新的文本文件

我是编程的新手,并且在过去的几个月中一直在业余时间学习python。我决定要尝试创建一个小的脚本,将文本文件中的美国拼写转换为英语拼写。

在过去的5个小时里,我一直在尝试各种事情,但最终想出了一些可以使我更加接近目标的东西,但还远远没有达到目标!

#imported dictionary contains 1800 english:american spelling key:value pairs. from english_american_dictionary import dictdef replace_all(text, dict):    for english, american in dict.iteritems():        text = text.replace(american, english)    return textmy_text = open(''test_file.txt'', ''r'')for line in my_text:    new_line = replace_all(line, dict)    output = open(''output_test_file.txt'', ''a'')    print >> output, new_lineoutput.close()

我确信有更好的处理方法,但是对于此脚本,这是我遇到的问题:

  • 在输出文件中,这些行每隔一行写入一行,并且之间有换行符,但是原始的test_file.txt没有此行。test_file.txt的内容显示在此页面底部
  • 仅将一行中的美国拼写的第一个实例转换为英语。
  • 我并不是很想在附加模式下打开输出文件,但是无法在此代码结构中找出“ r”。

任何对此急切的新人表示赞赏的帮助!

test_file.txt的内容为:

I am sample file.I contain an english spelling: colour.3 american spellings on 1 line: color, analyze, utilize.1 american spelling on 1 line: familiarize.

答案1

小编典典

您看到的多余空白行是因为您print要写出末尾已经包含换行符的行。由于也print编写了自己的换行符,因此您的输出将变成双倍行距。一个简单的解决方法是使用outfile.write(new_line)

至于文件模式,问题在于您要一遍又一遍地打开输出文件。一开始,您只需要打开一次即可。使用with语句来处理打开的文件通常是一个好主意,因为当您使用它们时,它们会为您关闭它们。

我不理解您的其他问题,仅发生了一些替换。是您的字典中失踪的拼写''analyze''''utilize''

我建议的一个建议是不要逐行更换。您可以一次读取整个文件file.read(),然后将其作为一个单元进行处理。这可能会更快,因为它不需要在拼写字典中的项目上循环那么频繁(只需循环一次,而不是每行一次):

with open(''test_file.txt'', ''r'') as in_file:    text = in_file.read()with open(''output_test_file.txt'', ''w'') as out_file:    out_file.write(replace_all(text, spelling_dict))

编辑:

为了使您的代码正确处理包含其他单词的单词(例如包含“ tire”的“ entre”),您可能需要放弃使用str.replace正则表达式的简单方法。

这是一个快速拼凑的解决方案,它使用re.sub,给出了从美式到英式英语的拼写变化字典(即,与您当前字典相反的顺序):

import re#from english_american_dictionary import ame_to_bre_spellingsame_to_bre_spellings = {''tire'':''tyre'', ''color'':''colour'', ''utilize'':''utilise''}def replacer_factory(spelling_dict):    def replacer(match):        word = match.group()        return spelling_dict.get(word, word)    return replacerdef ame_to_bre(text):    pattern = r''\b\w+\b''  # this pattern matches whole words only    replacer = replacer_factory(ame_to_bre_spellings)    return re.sub(pattern, replacer, text)def main():    #with open(''test_file.txt'') as in_file:    #    text = in_file.read()    text = ''foo color, entire, utilize''    #with open(''output_test_file.txt'', ''w'') as out_file:    #    out_file.write(ame_to_bre(text))    print(ame_to_bre(text))if __name__ == ''__main__'':    main()

关于此代码结构的一个好处是,如果您以其他顺序将字典传递给replacer_factory函数,则可以轻松地将英式英语拼写转换回美式英语拼写。

Python-从文本文件中查找行号

Python-从文本文件中查找行号

我正在编写在文本文件中查找的代码,并查看输入是否在其中。

例如,

我输入了“比萨”

我的文本文件包含:

bread
pizza
pasta
tomato

有没有办法打印披萨这个词所在的行号?

关于使用Python在文本文件中查找和替换python 文本查找替换的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Linux在所有文件中查找和替换、php – 在多个文件中查找和替换、Python 2.7-使用字典从文本文件中查找并替换为新的文本文件、Python-从文本文件中查找行号的相关知识,请在本站寻找。

本文标签: