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 时,我怎么能找到它的位置?
如果有一种更简单的方法可以做到这一点非常棒
您收到错误是因为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)