簡體   English   中英

我如何消除間距,換行符,以使列表python中的每個字符串都有一個以空格分隔的字符串

[英]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

您可以在這里使用正則表達式

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])

正則表達式模式\\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 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM