我有一部分python代码没有用值更新我的文本文件,请帮助我修复代码
我的代码:
import re
import collections
class Group:
def __init__(self):
self.members = []
self.text = []
with open('textaweq1.txt', "r+") as f:
# so specific lines can be edited
lines = f.readlines()
groups = collections.defaultdict(Group)
group_pattern = re.compile(r'^(\S+)\((.*)\)$')
current_group = None
for line in range(len(lines)):
curr_line = lines[line]
# to prevent searches on lines with no group
if "(" in curr_line:
curr_line = curr_line.strip()
m = group_pattern.match(curr_line)
if m:
group_name, group_members = m.groups()
groups[group_name].members += filter(lambda x: x not in groups[group_name].members, group_members.split(','))
current_group = group_name
already_seen = []
for line in range(len(lines)):
curr_line = lines[line]
for key in groups.keys():
if key in curr_line.strip():
if key in already_seen:
lines[line] = ""
else:
already_seen.append(key)
open_par = curr_line.index("(")
close_par = curr_line.index(")")
member_str = ",".join(groups[key].members)
lines[line] = curr_line[:open_par+1] + member_str + curr_line[close_par:]
print groups[key].members
if 'skoda' in groups[key].members:
print 'yes'
listnames=[]
if 'skoda' in groups[key].members:
listnames.append('animal')
if 'dog' in groups[key].members:
listnames.append('animal')
allText = f.read()
allText = allText.replace('pets()', 'pets(' + ', '.join(listnames) + ')') # or use re python
f.write(allText)
# clear the file and reset the file cursor
f.truncate()
f.seek(0)
for line in lines:
f.write(line)
错误:
File "C:\Python27\awegedir.py", line 54, in <module>
f.write(allText)
IOError: [Errno 0] Error
但我的代码并没有编写和回复pets(),它与文本文件保持相同。 请指出我在代码上的错误并改正!你知道吗
你要做的是:
allText
将是空的。你知道吗allText
是空的,.replace()
没有任何效果f.write(allText)
本可以做的任何更改)f.write()
所做的任何更改)。你知道吗总而言之,你的方法在我看来很复杂。尝试将其分为几个步骤:
with open(..., 'r')
块)相关问题 更多 >
编程相关推荐