В Python 2.4, как может, я разделяю символы после'';?

Одно место, где структура была полезна для меня, - когда у меня есть система, это получает сообщения фиксированного формата (говорят, последовательный порт) от другой системы. Можно бросить поток байтов в структуру, которая определяет поля, и затем легко получите доступ к полям.

typedef struct
{
    int messageId;
    int messageCounter;
    int messageData;
} tMessageType;

void processMessage(unsigned char *rawMessage)
{
    tMessageType *messageFields = (tMessageType *)rawMessage;
    printf("MessageId is %d\n", messageFields->messageId);
}

, Очевидно, это - то же самое, которое Вы сделали бы в C, но я нахожу, что издержки необходимости декодировать сообщение в класс обычно не стоят того.

34
задан lfaraone 24 July 2009 в 19:42
поделиться

8 ответов

Я бы порекомендовал сказать

line.split(";")[0]

, который даст вам строку, содержащую все символы до, но не включая первый ";" характер. Если нет ";" присутствует символ, то вы получите всю строку.

108
ответ дан 27 November 2019 в 15:55
поделиться

просто разделите строку по комментарию и получите первый элемент например,

line.split(";")[0]
16
ответ дан 27 November 2019 в 15:55
поделиться
file = open(r'c:\temp\test.txt', 'r')
for line in file:   print
   line.split(";")[0].strip()
3
ответ дан 27 November 2019 в 15:55
поделиться

Итак, вы захотите разделить строку по первой точке с запятой, взять все перед ней, удалить все оставшиеся пробелы и добавить символ новой строки.

rtr = line.split(";", 1)[0].rstrip() + '\n'

Ссылки на документацию:

2
ответ дан 27 November 2019 в 15:55
поделиться

Для Python 2.5 или выше, я бы использовал метод partition :

rtr = line.partition(';')[0].rstrip() + '\n'
4
ответ дан 27 November 2019 в 15:55
поделиться

Чтение, разделение, разделение и объединение строк с новой строкой - все в одной строке Python:

rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))
1
ответ дан 27 November 2019 в 15:55
поделиться

Я не тестировал это на python, но использую аналогичный код в другом месте.

import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")
-2
ответ дан 27 November 2019 в 15:55
поделиться

Другой способ:

In [6]: line = "foo;bar"
In [7]: line[:line.find(";")] + "\n"
Out[7]: 'foo\n'
0
ответ дан 27 November 2019 в 15:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: