我有一个包含以下信息的文件:
1/1/2010
1-2-3-4
1
1/2/2010
1-5-6-7
111
etc.
我希望能够将此内容写入另一个文件,其中'-'
的每个实例都替换为','
。我已经尝试使用str.split('-')
并意识到我收到此错误后无法将列表写入文件
TypeError: must be string or read-only character buffer, not list
我也试过使用str.replace('-', 'i')
,但这一切都给了我另一个错误
TypeError: replace() takes at least 2 arguments (1 given)
有人能指出我正确的方向吗?
我还应该指出我首先尝试使用str.split()
的原因是因为最终这将全部放在字典中
{0:[['1/1/2010], ['1', '2', '3', '4'], ['1']], 1: [['1/2/2010'], ['1', '5', '6', '7'], ['111']], etc.}
只是更新...... 我找到了一种使用未提及的正则表达式的简单方法。
>>> def test(filename):
import re
input_file = open(filename, 'r')
output_file = open('test.txt', "w")
for line in input_file:
line = line.strip()
line = re.sub('-', ',', line)
output_file.write(line)
output_file.write('\n')
input_file.close()
output_file.close()
答案 0 :(得分:3)
def replaceAll(infilepath, outfilepath):
infile = open(infilepath)
outfile = open(outfilepath, 'w')
for line in infile:
outfile.write(line.replace('-', ','))
infile.close()
outfile.close()
编辑:这是一种更加抒情的方式:
def replaceAll(infilepath, outfilepath):
with open(infilepath) as infile, open(outfilepath, 'w') as outfile:
for line in infile:
outfile.write(line.replace('-', ','))
答案 1 :(得分:1)
如果格式一致,我建议您使用正则表达式来解析文件,这是一个示例:
import os, re
data = """1/1/2010
1-2-3-4
1
1/2/2010
1-5-6-7
111"""
regex = re.compile(os.linesep.join([r'(\d{1,2}/\d{1,2}/\d{4})',
r'(\d+-\d+-\d+-\d+)',
r'(\d+)']))
groups = {}
n = 0
for match in regex.finditer(data):
groups[n] = [[match.group(1)], match.group(2).split('-'), [match.group(3)]]
n += 1
>>> groups
{0: [['1/1/2010'], ['1', '2', '3', '4'], ['1']], 1: [['1/2/2010'], ['1', '5', '6', '7'], ['111']]}
至于你的问题(如何用逗号替换连字符),假设你已经将文件读入字符串data
,你可以使用以下代码用逗号替换所有连字符:
data = data.replace('-', ',')
您还可以在所有'-'
上拆分字符串,然后使用','.join()
,但使用str.replace()
更简单:
data = ','.join(data.split('-'))
答案 2 :(得分:0)
尝试使用此
replace("-",",");
答案 3 :(得分:0)
我创建了一个测试文件来向您展示。首先,请阅读:
>>> contents = open('test.txt', 'r').read()
>>> contents
'blah-blah\nsomething-\n'
使用字符串替换方法将-
的出现替换为,
:
>>> contents_replaced = contents.replace('-', ',')
>>> contents_replaced
'blah,blah\nsomething,\n'
将其写回文件并将其读入以确保其已更新:
>>> open('test2.txt', 'w').write(contents_replaced)
>>> open('test2.txt', 'r').read()
'blah,blah\nsomething,\n'