Привет У меня есть быстрый вопрос о поиске строки # из моего текста и использования этой линии # вычислить что-топитон высчитывает стол без (Numpy)
(это не HW вопрос и я просто начать изучение Python)
экс ~ если мой текст выглядит
100 200 300
400 500 600
700 800 900
120 130 140
150 160 170
и
f1 = open('sample4.txt','r')
line_num = 0
search_phrase = "100"
for line in f1.readlines():
line_num += 1
if line.find(search_phrase) >= 0:
x = line_num
print (x)
import numpy
data = numpy.loadtxt('sample4.txt')
print(data[x:x+3,1].sum())
я мог получить
1430.0 which is (200+500+800+130)
однако, если мой текст выглядит следующим образом:
apple is good
i dont like apple
100 200 300
400 500 600
700 800 900
120 130 140
150 160 170
i love orange
ошибка выскакивает и говорит
Traceback (most recent call last):
File "C:/Python33/sample4.py", line 13, in <module>
data = numpy.loadtxt('sample4.txt')
File "C:\Python33\lib\site-packages\numpy\lib\npyio.py", line 827, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Python33\lib\site-packages\numpy\lib\npyio.py", line 827, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: b'apple'
я думаю, что причина, почему эта ошибка всплывает еще потому NUMPY
есть ли способ сделать это правильно? без использования какого-либо skip_header или skip_footer
Могут ли строки с текстом появляться в любом месте вашего файла или всегда в начале? Что вам не нравится в пропуске нескольких строк при чтении файла? – Floris
Вы можете передать что-то необязательному аргументу 'dtype' в' np.loadtxt'. ('dtype' по умолчанию имеет значение float, поэтому вы видите ошибку) – Justin
В качестве примечания, посмотрите на [' перечисление'] (http://docs.python.org/3.3/library/functions.html# enumerate), если вы хотите получить номер строки каждой строки; это намного проще (и более надежным), чем пытаться отслеживать это явно. – abarnert