Текст, сохраненный в переменной с нулевыми значениями, когда я пытаюсь найти конкретную строку - PullRequest
1 голос
/ 30 мая 2019

Я сохранил pdf-содержимое в переменную (называемую CCR ), и когда я печатаю эту переменную, она показывает текст who , строка за строкой .Я пытаюсь зациклить, чтобы найти несколько строк, которые соответствуют фразе, но это ничего не показывает мне.Когда я пытаюсь увидеть, что происходит в этом цикле, я обнаруживаю, что каждая строка, прочитанная из переменной, выглядит пустой.

#Extracting text and test

raw_CCR = parser.from_file(r'C:\Users\guerr\OneDrive\Documentos\PYTHON\ROOT_FILES\CCR.pdf')
CCR = raw_CCR['content']
print(CCR)


#Finding lines

key = "13.2"
linhas = 0
for line in CCR:
    linhas += 1
    print(linhas)
    if key in line:
        print("Found")
    else:
        print("Not Found")

Часть цикла.Ничего не находит.Значение "linhas" только помогает мне узнать, что происходит внутри цикла

1
Not Found
2
Not Found
3
Not Found
4
Not Found
5
Not Found
6
Not Found
7
Not Found
8
Not Found
9
Not Found
10
Not Found
11
Not Found
12
Not Found
13
Not Found
14
Not Found
15
Not Found
16
Not Found
17
Not Found
18
Not Found
19
Not Found
20
Not Found
21
Not Found
22
Not Found
23
Not Found
24
Not Found
25
Not Found
26
Not Found

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Ваша переменная line на самом деле становится символом за символом. Таким образом, ваша строка var будет выглядеть примерно так: t, h, e и т. Д.

.

Добавьте .splitlines(), если хотите сделать построчно. Я только что попробовал это с tika на PDF, и он работал нормально.

for line in CCR.splitlines():
    linhas += 1
    print(linhas)
    if key in line:
        print("Found")
    else:
        print("Not Found")
0 голосов
/ 30 мая 2019

Мне кажется, что проблема может заключаться в том, как ваши данные CCR отформатированы / организованы.

Выполнение цикла подобного рода с использованием случайной строки, а затем преобразование его в список (а затем циклический просмотр этих данных с использованием того же цикла, что и у вас) работало нормально для меня.

s = 'Some random string or line with 13.2 in it'
>>> s = s.split(' ')
>>> s
['Some', 'random', 'string', 'or', 'line', 'with', '13.2', 'in', 'it']
>>> x = 0
>>> for line in s:
    x+=1
    print(x)
    if key in line:
        print('Found')
    else:
        print('Not Found')


1
Not Found
2
Not Found
3
Not Found
4
Not Found
5
Not Found
6
Not Found
7
Found
8
Not Found
9
Not Found

Возможно, вы могли бы попытаться разбить ваши данные на список с помощью символа новой строки (\ n), а затем выполнить итерацию по нему, чтобы найти данные, содержащие искомый ключ.

...