-1

我知道我已经发布了一个类似的问题,但这个问题不同,我有更多代码。由于最后一个问题被否决(尽管答案对我有帮助),mods 可以将其删除,以免使论坛混乱。

无论如何,希望没有人会因为我提出另一个问题试图实现我的目标而感到恼火。

我正在尝试删除 txt 文件中每个奇怪的名称。我的问题有两个部分:

a) 为什么我会得到AttributeError: 'str' object attribute replace is read-only

b)我是使用累加器模式以正确的方式解决这个问题,还是有更好的方法来做到这一点?其他人已经建议使用该re模块,但是由于我是初学者并且对此了解不多,因此我暂时避免使用它。

到目前为止,这是我的代码:

f = open("old_text.txt")
temp = f.read()
f.close


new_file = open("new_text.txt", "w")

counter = 0
name = "Courtney"

for number in range(temp.count(name)):
    counter = +1 
    temp.find("Courtney")
    if counter % 2 == 0:
        pass
    else:
        temp.replace = ("Courteny", "")

new_file.write(temp)        
new_file.close

所以我想删除第一次出现的“Courtney”,而不是第二次,依此类推,直到文件结束。然后将结果写入新文件。

任何帮助深表感谢,

蓬松的

4

2 回答 2

1
f = open("old_text.txt")
temp = f.read()
f.close


new_file = open("new_text.txt", "w")

counter = 0
name = "Courtney"

for number in range(temp.count(name)):
    counter = +1 
    temp.find("Courtney")
    if counter % 2 == 0:
        pass
    else:
        temp = temp.replace("Courteny", "")
#                         ^ No need for = sign here

new_file.write(temp)        
new_file.close

str.replace是一个函数,它接受两个参数,第一个是你想要替换的东西,第二个是你想要替换它的东西。因此,您无需在此处分配任何内容。

这就是你的代码应该是这样的:

remember = []
with open('old_text.txt', 'r') as old:
    for var in old:
        remember += str(var).split(' ')[::2]
        remember += "\n"

with open('new_text.txt', 'w') as new:
    for var in remember:
        new.write(var + ' ')

print remember
于 2013-10-03T06:00:14.477 回答
0

这应该这样做:

import collections
with open('path/to/input') as infile, open('path/to/output', 'w') as outfile:
  counts = collections.defaultdict(int)
  for line in infile:
    line = line.strip().split()
    for word in line:
      if not counts[word]%2:
        outfile.write(word + " ")
        counts[word] += 1
    outfile.write('\n')
于 2013-10-03T06:21:24.687 回答