我有一个带有数字和符号的文本文件,我想删除它们的一些字符并添加新行。 例如,文本文件是这样的:
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"))
答案 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)