странное поведение строки после чтения из текстового файла в Python - PullRequest
0 голосов
/ 25 июня 2011

Я читаю текстовый файл, который, как мне известно, имеет 38-ю строку "Uncalibrated Peaks:", и я знаю, что он хранится в 38-м элементе моего списка. Я уже проверил их, и нет проблем с индексацией.

Я читаю текстовый файл по следующему коду

import os

fd = open('Report.txt')
contents = fd.readlines()
fd.close()

for ind, line in enumerate(contents):
    line = line.split(" ")
    contents[ind] = line

но мы проверяем, например, длину первого слова в 38-й строке на

print len(contents[38][0])

25, я знаю, что эта команда упоминается для правильного элемента в списке, поэтому нет проблемы с индексацией

print len('Uncalibrated')

12

!! хотя в теории их должно быть одинаково. Кажется, что каждый символ занимает 2 место в строковом векторе, что, по-видимому, связано с проблемой юникодирования

Ответы [ 4 ]

3 голосов
/ 25 июня 2011

Обычно, если кажется, что символы в строке "слишком широкие", у вас, вероятно, есть файл Unicode. Попробуйте преобразовать его, используя функцию unicode .

Глядя на ваш код выше, он выглядит скорее как простая ошибка индексации.

1 голос
/ 25 июня 2011

Вы пробовали contents[37][0]? 38-я строка должна быть с индексом 37, так как индексы начинаются с 0.

0 голосов
/ 25 июня 2011
fd = open('foo.html')
contents = fd.readlines()
fd.close()

for ind, line in enumerate(contents):
    line = line.split(" ")
    contents[ind] = line

print contents,'\n\n------------------'


fd = open('foo.html')
li = fd.readlines()
fd.close()

a = map(lambda x: x.split(" "),li)
print a,'\n',a==contents,'\n\n------------------'


fd = open('foo.html')
b = [line.split(" ") for line in fd]
fd.close()

print b,'\n',b==contents
0 голосов
/ 25 июня 2011

try

if ind == 38:
   print line
line = line.split()

Убедитесь, что это строка, которую вы хотите, и разбейте ее.Как сказано выше, постер говорит, что вы, возможно, неправильно читаете строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...