Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使字符串大写的单个字母_Python_Python 2.7 - Fatal编程技术网

Python 如何使字符串大写的单个字母

Python 如何使字符串大写的单个字母,python,python-2.7,Python,Python 2.7,我试图获取一个输入文本文件,并使每个“I”本身都是大写的。到目前为止,这是我的代码,但它创建了一长行代码,而不是保留换行符和段落 with open("greenEggsAndHam.txt", "r") as myfile: iText = myfile.read().split() oText = '' for word in iText: if(word == "i"): word = word.upper() oText = oText + w

我试图获取一个输入文本文件,并使每个“I”本身都是大写的。到目前为止,这是我的代码,但它创建了一长行代码,而不是保留换行符和段落

with open("greenEggsAndHam.txt", "r") as myfile:
    iText = myfile.read().split()

oText = ''

for word in iText:
    if(word == "i"):
        word = word.upper()
    oText = oText + word + " "
print oText
现在的输出如下所示:

I am Sam Sam I am That Sam-i-am!That Sam-i-am! I do not like that Sam-i-am!
与此相反:

I am Sam
Sam I am

That Sam-i-am!
That Sam-i-am!
I do not like that Sam-i-am!

有没有办法在保留段落和换行符的同时做到这一点?

当您将文本拆分为单个单词的一个大列表,以便删除任何换行符时,代码会失败,这就是为什么您只剩下一行大文本的原因

import re
string = re.sub('\bi\b', 'I', string)
您可以在迭代文件对象时拆分每一行,并检查
i

with open("greenEggsAndHam.txt", "r") as myfile:
   for line in myfile:
       print(" ".join([w.upper() if w == "i" else w for w in line.split()]))
如果需要一个大的文本体:

with open("greenEggsAndHam.txt", "r") as myfile:
   text = "\n".join([" ".join([ch.upper() if ch == "i" else ch for ch in line.split()]) for line in myfi

你问题中的缩进有点离题。不管怎么说,你有没有想过读线?硬返回会消失,因为您拆分了它们,而您从未插入它们。这不起作用,因为
-
是非单词字符,所以
-i-
位于单词边界。它将创建
Sam-i-am
而不是
Sam-i-am
@torogitar:有关详细信息,请参阅:“如果未指定sep或sep为
None
,则应用不同的拆分算法…”。