我有一个这样的列表
list = ['Hi', ',', 'my', 'name', 'is', 'Bob', '!']
我想将其转换为字符串,最初,我在stackoverflow上发现可以使用.join()。所以我做了:
x = ' '.join(list)
print(x)
打印
"Hi , my name is Bob !"
当我要打印的是:
"Hi, my name is Bob!"
如何在句点和感叹号之前添加空格?我想要一个更通用的案例,以便我可以将文本文件作为列表读入,并将其转换为字符串。
谢谢!
答案 0 :(得分:2)
要在一般情况下解决此问题,请使用nltk
' s "moses" detokenizer:
In [1]: l = ["Hi", ",", "my", "name", "is", "Bob", "!"]
In [2]: from nltk.tokenize.moses import MosesDetokenizer
In [3]: detokenizer = MosesDetokenizer()
In [4]: detokenizer.detokenize(l, return_str=True)
Out[4]: u'Hi, my name is Bob!'
detokenizer还不是稳定的nltk
包的一部分。为了能够立即使用它,直接从github安装nltk
。
答案 1 :(得分:1)
使用简单的正则表达式怎么样?
import re
list = ['Hi', ',', 'my', 'name', 'is', 'Bob', '!']
x = re.sub(r' (\W)',r'\1',' '.join(list))
print(x)
>>> Hi, my name is Bob!
答案 2 :(得分:0)
一个不同的解决方案:
>>> from string import punctuation
>>> lis = ["Hi", ",", "my", "name", "is", "Bob", "!"]
>>> string = ''
>>> for i, x in enumerate(lis):
if x not in punctuation and i != 0:
string += ' ' + x
elif x not in punctuation and i == 0:
string += x
else:
string += x
>>> print(string)
"Hi, my name is Bob!"