我读了一个包含以下内容的文件:
> hello world
使用以下代码阅读此文件,但我无法阅读其中的一部分
with open("/home/pi/example1.txt") as f1:
test = f1.readlines(0)
print (test)
print (test[0:2])
预期产出:
Hello world
He
输出我得到的东西
['helloworld\r\n']
['helloworld\r\n']
从文件中获取子串的一部分的正确(和简单)方法是什么?
答案 0 :(得分:2)
readlines()
返回一个列表,正如您在输出中看到的那样,字符串实际上是单项列表的一部分:
>>> f = ['helloworld\r\n']
>>> f[0][0:2]
'he'
要修复原始代码,您需要在读取线调用之后移动0 :
test = f1.readlines()[0]
但是,当您使用with
语句时,您的生活会更简单:
with open("/home/pi/example1.txt") as f1:
for line in f1:
print(line)
print(line[0:2])
答案 1 :(得分:1)
只需改为:
with open("/home/pi/example1.txt") as f1:
for test in f1:
print(test)
print(test[0:2])
其他方式readline返回一个列表然后只使用索引行readline()[0]
答案 2 :(得分:1)
这是您想要的正确代码。
with open("/home/pi/example1.txt") as f1:
test = f1.readlines(0)
print (test[0])
print (test[0][0:2])
但您也可以使用以下方法。
with open("/home/pi/example1.txt") as f1:
test = f1.readline()
print (test)
print (test[0:2])
答案 3 :(得分:1)
您可以使用 .strip()功能删除字符串中的所有空格和换行符
with open('../../xx.txt','r') as fi:
for line in fi:
print(line.strip())
print(line[0:2])
我没有在第二个print语句中使用 .strip()方法,因为我们只是获取字符串的初始部分。所以它不会是一个新的线条角色(让我们希望如此)。万一你想要也可以使用那条线
print(line[0:2].strip())
如果你以后使用字符串进行任何比较,strip()方法将非常有用。
答案 4 :(得分:1)
readlines返回一个列表
使用test [0]作为子串