我将如何消除间距、换行符以使列表 python 中的每个字符串都有一个 space 分隔的字符串

How would I eliminate spacing, line breaks to have a space-delimited string for each string within my list 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

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

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

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

正则表达式模式 \s\s+ 匹配所有包含 2 个或更多白色space 字符的组。如前所述,如果两个单词之间的间距超过 1 space,则可以消除单词之间的间距。 r'\w\s\s+\w', r' ' 通过用单个 space.

消除单词边界之间的 space 来解决这个问题

还要注意它是 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 函数消除前导和尾随空格。