【问题标题】:Python - Parse a list of string formatted list of stringsPython - 解析字符串格式的字符串列表
【发布时间】:2021-02-23 22:45:54
【问题描述】:

我在解析以下格式的字符串列表时遇到问题。这实际上是一个 pandas 数据框:

def parse_text_to_list(row):
    print(row) # eval is not working as inner strings are missing the quotes
    return row

df.apply(parse_text_to_list)  

输出

# printed only one row to simplify the question
['[[str1, str2], [str1, a long text], ..., [strn, strx]]']

但想将其转换为纯 python 列表,如:

[["str1", "str2"], ["str1", "a long text"], ... ["strn", "strx"]]

@Negative 标记 - 让我知道原因

【问题讨论】:

  • 将您的输入数据框添加到 Q
  • @SreeramTP - 你能提供更多帮助吗?
  • 如果您可以将几行输入数据框作为文本添加到您的 Q 中,我当然可以尝试提供帮助

标签: python pandas parsing


【解决方案1】:

您可以尝试regular expressionliteral_eval 获取列表

import re
import ast

l = ['[[str1, str2], [str1, a long text], [strn, strx]]']

output = ast.literal_eval(re.sub(r'([^\[\],\s][^\[\],]+[^\[\],\s])', r'"\1"', l[0]))

print(output)
[['str1', 'str2'], ['str1', 'a long text'], ['strn', 'strx']]

【讨论】:

  • 完美,非常感谢。它就像魅力一样。但想知道正则表达式部分发生了什么。你能解释一下吗?
  • 它正在检查是否有任何东西以except[ ] space , 开头,然后在except[ ] , 之间的任何东西不止一次并以except[ ] space , 结尾
【解决方案2】:

如果您想将每一行打印为列表,您可以使用:


def parse_text_to_list(row):
    print(row.tolist())
    return row

但是如果你想将每一行转换成List,你可以直接使用:

df.values.tolist()

This questions is already resolved here

【讨论】:

  • 不,它没有回答我的问题
猜你喜欢
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多