Python 如何使字符串大写的单个字母
我试图获取一个输入文本文件,并使每个“I”本身都是大写的。到目前为止,这是我的代码,但它创建了一长行代码,而不是保留换行符和段落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
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
,则应用不同的拆分算法…”。