如何消除间距、换行符以在我的列表python中使每个字符串为以空格分隔的字符串

2024-09-28 16:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我对python很陌生,需要帮助。我有一些示例数据,想知道如何消除每个列表中每个字符串的间距。你知道吗

data = [
 ['In dolore     .'], ['Voluptatum.    '],
 ['Veniam hic non minima.         '],
 ['Dolores       Quis enim'], 
 ['     sequi ducimus']
 ]
 print data

我想要的结果是:

data = [
 ['In dolore.'], ['Voluptatum.'],
 ['Veniam hic non minima.'],
 ['Dolores Quis enim'], 
 ['sequi ducimus']
 ]

以下是两种我认为可行但没有成功的方法

for i in data:
str = ''.join(data)
final_data = str.replace("  ","")
print final_data

我最后的尝试是:

final_data = ''.join(data) 
final_data.replace("  ", "") 
print final_data

Tags: indatafinalprintnonhicdolorequis
3条回答

你可以在这里使用正则表达式

import re
for i in range(len(data)):
    data[i][0] = re.sub(r'(\w)\s\s+(\w)', r'\1 \2', data[i][0])
    data[i][0] = re.sub(r'\s\s+', r'', data[i][0])
    data[i][0] = re.sub(r"(\w)\s([.])", r"\1\2", dat[i][0])

regex模式\s\s+匹配由2个或更多空格字符组成的所有组。如前所述,如果两个单词之间的间距超过1,则可以消除单词之间的间距。r'\w\s\s+\w', r'\1 \2'通过用单个空格消除单词边界之间的空格来解决这个问题。你知道吗

还要注意,它是data[i][0],因为奇怪的是,数据是一个列表列表。你知道吗

import re
final_data = [[re.sub('\s+\.', '.', re.sub('\s+', ' ', s)).strip()] for l in data for s in l]
print final_data

[['In dolore.'], ['Voluptatum.'], ['Veniam hic non minima.'], ['Dolores Quis enim'], ['sequi ducimus']]

这样,前导空格和尾随空格就被删除了,而内部空格并没有被完全删除。你知道吗

内部替换用单个空格替换多个空格字符,外部替换在句点之前消除空格字符。strip函数消除前导和尾随空格。你知道吗

print [[s.replace(" ","")] for l in data for s in l ]

相关问题 更多 >