2017-03-07 196 views
-1

我有一个程序,它接受文本输入并存储输入的单词列表,但没有重复。我需要将它们存储在一个文件中,以便将它转换为字符串,并在每个单词之间用逗号将其加入。字符串分隔符

现在,如果一个单词附近有一个逗号,那么它将会中断。因此,我需要一个字符串来加入列表中不属于任何项目的项目。

例如,如果一个项目是“狗”,字符串og无法使用,所以程序会知道这一点,并添加另一个字母,使其成为一组独特的字母。

然后我连接这些字符串重新创建输入的文本,但它只适用于如果我分裂他们的字符串不是单词的一部分。

我现在使用@#,因为它不太可能在输入的文本中,但我希望它是完美的。

+0

你绝对需要这样做吗?存储列表比导出自己的分隔符更好。 – Denziloe

+0

@Dzilziloe很遗憾,这是一个测试特定技能的测试。抱歉。 – SRawes

+0

我编辑了这个问题,使它更直接。如何使用'\ n'? –

回答

0

考虑使用现有的序列化库,将您的对象转换为字符串,而无需您自己创建算法。例如,json:

>>> import json 
>>> my_strings = ["foo", 'ba"r', "ba,z", "qu'x", "[email protected]#rt"] 
>>> s = json.dumps(my_strings) 
>>> s 
'["foo", "ba\\"r", "ba,z", "qu\'x", "[email protected]#rt"]' 
>>> type(s) 
<class 'str'> 
>>> result = json.loads(s) 
>>> result 
['foo', 'ba"r', 'ba,z', "qu'x", '[email protected]#rt'] 
>>> type(result) 
<class 'list'> 
+0

谢谢,这将工作,它只是我必须做一个具体的方式进行测试。 @Kevin – SRawes

+0

有什么想法?这真的会有所帮助。也不是一个测试更多的调查,看看我们可以在现实世界中做得如何,所以我们可以问专家。@ Kevin – SRawes

+0

那么,简单的解决方案是使用“\ n”作为分隔符,因为那些是不可能使用input()输入的,所以你知道你的单词都不会包含它。如果这不令人满意,我想我只是遍历每个可能的分隔符,比如'import string;导入itertools;对于我在itertools.count(1)中:对于itertools.product(string.printable,repeat = i)中的s:...直到我找到一个不存在于任何单词中的分隔符。 (但是这引发了一个问题,在阅读文件时,你怎么知道你在写文件时使用了什么分隔符?) – Kevin