我有以下段落作为 .txt 文件的输入:
... lorem“非常胡萝卜,增强了本科体验。”。目前不在 convallis 的 felis。营养元素“犯规”是“中径作者的一次热身!”。赛程为他,足球“伤心”...
这是一个 Python 字符串:
'Lorem "ipsum dolor sit amet, consectetur adipiscing elit.". Praesent non sem urna. Pellentesque elementum "turpi" est, "in fermentum diam auctor aliquam!". Morbi rhoncus erat ipsum, eu "tristique"'
我想创建一个仅包含引用短语的列表,并将引号内的单词隔离为一个列表(由空格分隔)。
输出:
['ipsum', 'dolor', 'sit', 'amet,', 'consectetur', 'adipiscing', 'elit.', 'turpi'', 'in', 'fermentum', 'diam', 'auctor', 'aliquam!', 'tristique']
我的思考过程是读入文件,然后以某种方式用引号拆分段落,但我似乎无法找到让“split()”按照我想要的方式工作的方法。我有一种感觉,这可以通过最少的循环和使用 split() 作为组织数据的方法来完成,而无需使用 re、shlex、csv 或其他导入的模块。
我什至想过将分隔符重新添加到列表中,然后“清理”列表。但即使这样也感觉有点复杂。
下面的代码为数组中的每一项都添加了双引号,这不是我想要的。只是我觉得我可以在使用 split() 后跟踪报价的一种方式。
with open(input_file, "r") as read_file:
for line in read_file:
quotes = ['"' + i + '"' for i in line.split('"') if i]
从我的评论复制:
使用 " 作为分隔符进行拆分后,您可以简单地提取列表的所有奇数索引元素。然后,正常拆分这些元素(使用空格分隔符)并将列表连接在一起。
例子:
text = """Lorem "ipsum dolor sit amet, consectetur adipiscing elit.". Praesent non sem urna. Pellentesque elementum "turpi'" est, "in fermentum diam auctor aliquam!". Morbi rhoncus erat ipsum, eu "tristique" """
text_split_by_quotes = text.split('"')
# get the odd-indexed elements (here's one way to do it):
text_in_quotes = text_split_by_quotes[1::2]
# split each normally (by whitespace) and flatten the list (here's one way to do it):
ans = []
for text in text_in_quotes:
ans.extend(text.split())
# print answer
print(ans)
>>> ['ipsum', 'dolor', 'sit', 'amet,', 'consectetur', 'adipiscing', 'elit.', "turpi'", 'in', 'fermentum', 'diam', 'auctor', 'aliquam!', 'tristique']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句