用换行符替换一些特殊字符\ n

时间:2014-01-15 03:50:03

标签: python

我有一个带有数字和符号的文本文件,我想删除它们的一些字符并添加新行。 例如,文本文件是这样的:

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"))

2 个答案:

答案 0 :(得分:2)

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 ++这样的语言,这可能很奇怪,其中单引号用于字符,双引号用于字符串。

答案 1 :(得分:0)

首先我认为s对象不是字符串而是列表,如果你尝试make是字符串(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)