【问题标题】:replace some special character with newline \n用换行符替换一些特殊字符 \n
【发布时间】:2014-01-15 12:17:36
【问题描述】:

我有一个带有数字和符号的文本文件,我想删除其中的一些字符并换行。 例如文本文件是这样的:

00004430474314-3","100004430474314-3","1779803519-3","100003004929477-3","100006224433874-3","1512754498-3","100003323786067

我希望输出是这样的:

00004430474314
100004430474314
100003004929477
1779803519
100006224433874
1512754498
100003323786067

我想用此代码将-3"," 替换为\n,但它不起作用。有什么帮助吗?

import re
import collections
s = re.findall('\w+', open('text.txt').read().lower())
print(s.replace("-3","",">\n"))

【问题讨论】:

  • 你不需要 Python。任何文本编辑器都可以很容易地进行这样的简单查找和替换。

标签: python


【解决方案1】:

re.findall 在这里没用。

with open('path/to/file') as infile:
    contents = infile.read()
    contents = contents.replace('-3","', '\n')
    print(contents)

您的代码的另一个问题是您似乎认为"-3","" 是一个包含-3"," 的字符串。不是这种情况。 Python 看到第二个 " 并将其解释为字符串的结尾。后面有一个逗号,这使得 python 将第二个位视为s.replace() 的第二个参数。

你真正想做的是告诉python那些双引号是字符串的一部分。您可以按如下方式手动转义它们:

some_string_with_double_quotes = "this is a \"double quote\" within a string"

你也可以通过用单引号定义字符串来完成同样的事情:

some_string_with_double_quotes = 'this is a "double quote" within a string'

这两种引号在python中是等价的,可以用来定义字符串。如果您来自像 C++ 这样的语言,其中单引号用于字符,而双引号用于字符串,这可能会让您感到奇怪。

【讨论】:

    【解决方案2】:

    首先我认为 s 对象不是一个 string 而是一个 list 并且如果你尝试制作一个 string (s= ''.join(s) 例如)你将以这样的方式结束:

    0000443047431431000044304743143177980351931000030049294773100006224433874315127544983100003323786067
    

    replace() 没用的地方。

    我会将您的代码更改为以下代码(在 python 3.2 中测试)

    lines = [line.strip() for line in open('text.txt')]
    line=''.join(lines)
    cl=line.replace("-3\",\"","\n")
    print(cl)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2011-12-28
      相关资源
      最近更新 更多