Python非Pandas环境下拆分字符串为单个字符的优化方案求助
原生Python实现嵌套列表中字符串拆分为单个字符列表
问题背景
我正在练习数据清洗,限制条件为不能使用Pandas,仅使用原生Python。数据集是一个嵌套列表:
dataset = [["My name is Anas", 1.92],["I am data Scientist",1.88],["I am Studying BSCS",2.0]]
每个子列表中的浮点数用于确认这是多值嵌套列表。我当前的代码是:
for i in dataset: for j in i: print(j[0].split())
这段代码会输出按单词拆分的列表(比如["My","Name","is","Anas"]),但我需要把字符串拆分为单个字符的列表,两种目标格式:
- 扁平化的单个字符列表:
["M","y","N","a","m","e","i","s","A","n","a","s"] - 保持嵌套结构的单个字符列表:
[['M', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'A', 'n', 'a', 's'],[ 'I', 'a', 'm', 'd', 'a', 't', 'a', 'S', 'c', 'i', 'e', 'n', 't', 'i', 's', 't'], ['I', 'a', 'm', 'S', 't', 'u', 'd', 'y', 'i', 'n', 'g', 'B', 'S', 'C', 'S']]
解决方案
实现嵌套式单个字符列表(保留原数据结构)
遍历原数据集的每个子列表,只处理字符串元素、跳过浮点数;对每个字符串过滤空格后,拆分出单个字符组成子列表,最后收集所有结果:
dataset = [["My name is Anas", 1.92],["I am data Scientist",1.88],["I am Studying BSCS",2.0]] result = [] for item in dataset: for element in item: if isinstance(element, str): # 过滤空格并拆分字符 char_list = [c for c in element if c != ' '] result.append(char_list) print(result)
输出结果:
[['M', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'A', 'n', 'a', 's'], ['I', 'a', 'm', 'd', 'a', 't', 'a', 'S', 'c', 'i', 'e', 'n', 't', 'i', 's', 't'], ['I', 'a', 'm', 'S', 't', 'u', 'd', 'y', 'i', 'n', 'g', 'B', 'S', 'C', 'S']]
实现扁平化单个字符列表
如果需要把所有字符合并到一个列表中,只需将每个字符列表的元素直接合并到结果列表:
dataset = [["My name is Anas", 1.92],["I am data Scientist",1.88],["I am Studying BSCS",2.0]] flat_result = [] for item in dataset: for element in item: if isinstance(element, str): # 过滤空格后逐个添加字符到扁平列表 flat_result.extend([c for c in element if c != ' ']) print(flat_result)
输出结果:
['M', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'A', 'n', 'a', 's', 'I', 'a', 'm', 'd', 'a', 't', 'a', 'S', 'c', 'i', 'e', 'n', 't', 'i', 's', 't', 'I', 'a', 'm', 'S', 't', 'u', 'd', 'y', 'i', 'n', 'g', 'B', 'S', 'C', 'S']
代码说明
- 用
isinstance(element, str)判断元素类型,确保只处理字符串、跳过浮点数; - 列表推导式
[c for c in element if c != ' ']快速完成空格过滤和字符拆分; - 嵌套结构用
append添加子列表,扁平化结构用extend直接合并元素。
内容的提问来源于stack exchange,提问作者Muhammad Anas Atiq
相关产品推荐
相关产品推荐

