【问题标题】:Converting a list of nested strings into a nested list of strings将嵌套字符串列表转换为字符串嵌套列表
【发布时间】:2016-02-08 03:18:38
【问题描述】:

我想知道如何使用 .split()、.strip() 和 .replace() 等字符串操作将嵌套字符串列表转换为字符串嵌套列表。一个示例将转换一个序列,例如(注意单引号和双引号):

['"Chipotle"', '"Pho"']

变成类似:

[["Chipotle"], ["Pho"]]

【问题讨论】:

  • [[word.strip('"')] for word in inputlist] 会这样做。如果您在一般情况下讨论这样做,这是一个相当广泛的问题。
  • 您是否曾经在外部字符串中有多个内部字符串?例如"'foo','bar'"?如果是这样,您可能需要ast.literal_eval,因为这会将多个逗号分隔的字符串转换为一个元组。

标签: python string list


【解决方案1】:

如果你的嵌套字符串是'"A","B","C"'的形式,你可以使用如下:

s.split('"')[1::2]  split by double quote, only odd indices (i.e. between quotes) 

如果你想要一个嵌套列表,你可以在列表推导中使用这个表达式,像这样:

[s.split('"')[1::2] for s in thelist]

其中thelist 是原始列表。

为什么只有奇数索引?它来自字符串的结构:

split() 结果的第 0 个元素将是第一个引号之前的字符串的一部分; 1st - 在第 1 和第 2 引号之间; 2nd - 在 2nd 和 3rd 之间,依此类推。

我们只需要奇数(开始)和偶数(结束)引号之间的字符串。

例子:

t = ['"1","2","3","4"', '"5","6","7',"8"']
a = [s.split('"')[1::2] for s in t]
print(a)

打印

[['1','2','3','4'],['5','6','7','8']]

【讨论】:

  • 什么是s?请详细说明并更好更全面地解释(答案似乎已中途放弃)。输入/输出/等。
  • s 是一个字符串(采用上述形式,即列表的元素)。
  • @Pynchia 谢谢!答案现在得到了更充分的解释
猜你喜欢
  • 2021-11-25
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多