我无法弄清楚我在哪里出错了。
原始文件是:
python is a programming language that lets you WORK more quickly and integrate your systems more effectively.
you can learn to use python and see almost immediate gains in PRODUCTIVITY and lower maintenance COSTS.
it's very helpful for any field of study.
我正在尝试创建一个函数,它接受一个文件并读取它然后将句子大写,将大写锁定更改为小写,将“它”更改为“这是”。然后将文件放回原处并在句子后添加句点。将新文件字符串写入名为“Edited.txt”的.txt文件中。
我的代码是:
def edit(aFile):
f = open(aFile, 'r')
xs = f.readlines()
f.close()
g = open('happy.txt', 'w')
for x in xs:
x.capitalize()
if x.isupper==1:
x.lower()
g.write(x)
g.close()
我得到的错误是“文件未找到 - happy.txt(访问被拒绝)。我试图读取该文件但不能。
我100%肯定文件在那里,媒体路径设置为文件夹。
答案 0 :(得分:2)
isupper
是一个返回True或False的方法,因此该行应为:
if x.isupper():
不
if x.isupper==1:
不确定这是否能回答您的问题,但您应该发布更多有关错误的信息,以便我们正确回答。
此外,许多python字符串方法(如capitalize()和lower())会创建字符串的COPIES,并且实际上不会修改原始字符串。所以如果:
x = "TEST"
然后调用
y = x.lower()
将导致x仍为“TEST”且y为“test”。
答案 1 :(得分:0)
本声明不做任何事情:
x.capitalize()
它返回x
,第一个字符大写,但您不会将结果保存在任何位置。此外,x在此声明后仍保持不变。如果要将x
的第一个字符大写,请执行以下操作:
x = x.capitalize()
答案 2 :(得分:0)
我可以看到的第一个主要错误是你正在进行字符串方法而不将它们分配给任何东西。字符串是不可变的,因此x.capitalize()
什么也不做(正如jh314所说)。
除了其他人所说的内容之外,您的for x in xs
行正在说“对于文件中的每一行,请执行以下操作”。您的文件似乎只有一行,因此您尝试在一行中执行所有操作。
尝试查看有关正则表达式和字符串方法的文档。
http://docs.python.org/2/library/string.html
http://docs.python.org/2/library/re.html
它们应该有助于识别您想要修改的行内的位置。