Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从字符串中删除垃圾数据_Python_String_Parsing_Eeprom - Fatal编程技术网

Python 如何从字符串中删除垃圾数据

Python 如何从字符串中删除垃圾数据,python,string,parsing,eeprom,Python,String,Parsing,Eeprom,我的处境是,我必须使用Python在嵌入式设备上读写EEPROM。第一页(256字节)用于非易失性数据存储。我的问题是变量的长度可能不同,我需要读取一个固定的量 例如,一个字符串存储在地址30处,长度可以是6到10字节。我需要读最大可能的长度,因为我不知道它在哪里结束。它的作用是在字符串中给我多余的垃圾 data_str = ee_read(bytecount) dbgmsg("Reading from EEPROM: addr = " + str(addr_low) + " value = "

我的处境是,我必须使用Python在嵌入式设备上读写EEPROM。第一页(256字节)用于非易失性数据存储。我的问题是变量的长度可能不同,我需要读取一个固定的量

例如,一个字符串存储在地址30处,长度可以是6到10字节。我需要读最大可能的长度,因为我不知道它在哪里结束。它的作用是在字符串中给我多余的垃圾

data_str = ee_read(bytecount)
dbgmsg("Reading from EEPROM: addr = " + str(addr_low) + " value = " + str(data_str))

> Reading from EEPROM: addr = 30 value = h11c13����

我对Python相当陌生。有没有一种方法可以在读取数据后自动删除字符串中的数据?

您的意思是:

>>> s = 'Reading from EEPROM: addr = 30 value = h11c13����'
>>> s
'Reading from EEPROM: addr = 30 value = h11c13\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd'
>>> filter(lambda x: ord(x)<128,s)
'Reading from EEPROM: addr = 30 value = h11c13'
适用于python2和python3的版本为:

''.join(x for x in s if ord(x) < 128)

你是说:

>>> s = 'Reading from EEPROM: addr = 30 value = h11c13����'
>>> s
'Reading from EEPROM: addr = 30 value = h11c13\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd'
>>> filter(lambda x: ord(x)<128,s)
'Reading from EEPROM: addr = 30 value = h11c13'
适用于python2和python3的版本为:

''.join(x for x in s if ord(x) < 128)

顺便说一句,我对
过滤器
返回的字符串感到震惊。。。我有点希望他们在python3.x中保持这种行为……这正是我想要的。问题是我正在使用一些定制的Python构建的嵌入式系统上工作。我无法访问库中的字符串函数。所以filter()不可用。@njozwiak--
filter
是python内置的--它不在字符串函数库中。我现在看到了。它在此系统上仍然不可用。我想我只是需要做一些写作前的处理,而不是阅读后的处理。要么为值的长度写入一个字节,要么强制数据始终为静态长度。多么痛苦…@AdamCadien--“字符串理解”是什么问题是,如果OP没有访问python内置的
filter
,那么很难猜测OP有权访问什么…顺便说一下,我对
filter
返回的字符串感到震惊。。。我有点希望他们在python3.x中保持这种行为……这正是我想要的。问题是我正在使用一些定制的Python构建的嵌入式系统上工作。我无法访问库中的字符串函数。所以filter()不可用。@njozwiak--
filter
是python内置的--它不在字符串函数库中。我现在看到了。它在此系统上仍然不可用。我想我只是需要做一些写作前的处理,而不是阅读后的处理。要么为值的长度写入一个字节,要么强制数据始终为静态长度。多么痛苦…@AdamCadien--“字符串理解”是什么问题是,如果OP没有访问python内置的
filter
,那么很难猜测OP有权访问什么…如果多余的垃圾恰好包含可打印字符怎么办?如果多余的垃圾恰好包含可打印字符怎么办?