读取.txt中所有大写或小写Python 2.7.1的所有行?

O.r*_*rka 0 python element skip lines

我正在尝试读取所有上部或全部小写的文件行.

如果file.txt包含:

Rememberr 8? when you
. Tellingmee THAT one
didntrememberthat
onethingtoday
Run Code Online (Sandbox Code Playgroud)

我希望它能读到:

didntrememberthat
ONETHINGTODAY
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

def function(file_name):
    data=[]
    f=open(file_name,'r')
    lines=f.readlines()
    for k in lines:
        single=tuple(k)
        for j in single:
            j=str(j)
            if j.isupper() or j.islower() == False:
            lines=f.readlines()[j:]
Run Code Online (Sandbox Code Playgroud)

然后我明白了:

lines=f.readlines()[j:]
TypeError: slice indices must be integers or None or have an __index__ method
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为j它不是一个整数.但是,j当我遇到if-statement 时,我怎么能找到它的位置?

如果有一种更简单的方法可以做到这一点非常棒

Mar*_*tos 5

您收到错误是因为j是一个字符串,而不是一个整数(str(j)顺便说一下,您不必调用它;它已经是一个字符串).

您可以删除混合使用大写和小写的行,如下所示:

all_one_case = [ line
                 for line in f.readlines()
                 if line.isupper() or line.islower() ]
Run Code Online (Sandbox Code Playgroud)

注意:使用isupper()islower()(原来使用过的re.)的信用可以转到这个问题的其他答案.

这也包括,例如,10 green bottles因为它只包含小写字母,即使它也包含数字和空格.从这个问题来看,我无法分辨这是否意图.如果您只想要字母,则可以使用此测试:

               … if re.match('[A-Z]*$|[a-z]*$', line) ]
Run Code Online (Sandbox Code Playgroud)

如果要用这些行替换文件,可以重新打开它以进行写入:

with open(file_name, 'r') as f:
    for line in all_one_case:
        f.write(line)
Run Code Online (Sandbox Code Playgroud)