我有一个数据列表df1
,它由三个列表字符串组成:
df1 = [
['1 "P040" 68.13 "P040_1" 2.55 8'],
['2 "P040" 46.82 "P040_2" 2.53 8'],
['3 "P040" 46.82 "P040_3" 2.51 8']
]
我想把它转换成下面的列表df2
,不带双引号("
):
df2 = [
['1', 'P040', '68.13', 'P040_1', '2.55', '8'],
['2', 'P040', '46.82', 'P040_2', '2.53', '8'],
['3', 'P040', '46.82', 'P040_3', '2.51', '8']
]
我尝试了以下方法,但效果不佳
for row in df1:
for elem in row:
elem.strip().split('"')
elem.strip().split('"')
6条答案
按热度按时间cigdeys31#
这里有一个简单的方法,你可以替换掉不需要的引号,然后用一个空格分割,使用列表解析得到一个列表:
输出:
xv8emn3q2#
因为list中的每个list只包含一个元素,所以你不需要运行2个
for
循环,这可以用一行列表解析来解决:ttp71kqs3#
你可以通过嵌套列表解析来实现它:
或具有列表解析的嵌套循环:
输出:
pgx2nnw84#
7uzetpgm5#
您可以组合使用
split()
和strip()
函数来拆分引号和空格。此示例将拆分
df1
中的元素并创建一个新的df2
列表:ia2d9nvy6#
您可以使用shlex.split()在'words'上进行拆分,其中单词可能是带引号的字符串,如下所示:
这是假设你的每个列表项都是一个包含字符串的列表。这修改了df1,创建了一个新的'df2',它将是:
输出将为:
使用shlex.split()的优点是,带引号的字符串可以包含空格,而不会产生普通的'split()'无法解决的问题。