-1

我很难弄清楚我要去哪里错了。

原始文件是:

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.

我正在尝试创建一个函数,该函数获取文件并读取它,然后将句子大写,将大写锁定更改为小写,将“it's”更改为“this is”。然后将文件放回原处并在句子后添加句点。将新文件字符串写入名为“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% 肯定该文件在那里并且媒体路径设置为该文件夹。

4

3 回答 3

2
isupper

是返回 True 或 False 的方法,因此该行应为:

if x.isupper():

不是

if x.isupper==1:

不确定这是否回答了您的问题,但您确实应该发布更多有关该错误的信息,以便我们正确回答。

此外,许多 python 字符串方法,例如 capitalize() 和 lower() 创建字符串的副本,实际上并不修改原始字符串。因此,如果:

x = "TEST"

然后打电话

y = x.lower()

将导致 x 仍然是“测试”,而 y 仍然是“测试”。

于 2013-07-24T20:38:06.967 回答
0

该语句没有按原样执行任何操作:

x.capitalize()

x以第一个大写字符返回,但您不会将结果保存在任何地方。此外,x 在此语句之后保持不变。如果要将 的第一个字符大写x,请执行以下操作:

x = x.capitalize()
于 2013-07-24T20:40:20.523 回答
0

我可以看到的第一个主要错误是您正在执行字符串方法而没有将它们分配给任何东西。字符串是不可变的,所以x.capitalize()什么都不做(如 jh314 所说)。

除了其他人所说的之外,您的for x in xs行是说“对于文件中的每一行,请执行以下操作”。您的文件似乎只有一行,因此您试图在一行上做所有事情。

尝试查看有关正则表达式和字符串方法的文档。

http://docs.python.org/2/library/string.html

http://docs.python.org/2/library/re.html

它们应该有助于识别您想要修改的行中的位置。

于 2013-07-24T20:48:09.553 回答