在Python

时间:2017-08-17 13:51:49

标签: python string list

我有一个特别长,讨厌的字符串,看起来像这样:

nastyString = '  nameOfString1, Inc_(stuff)\n  nameOfString2, Inc_(stuff)\n  '

等等。关键的定义特征是每个" nameOfString"之后是\n,后面有两个空格。第一个nameOfString也在它前面有两个空格。

我试图创建一个看起来像这样的列表:

niceList = [nameOfString1, Inc_(stuff), nameOfString2, Inc_(Stuff)]等等。

我尝试使用newString = nastyString.split()以及newString = nastyString.replace('\n ', ''),但最终,这些解决方案无法正常工作,因为每个nameOfString在逗号后面和&#之前都有空格39,我'此外,并非所有nameOfStrings都有' Inc,'但大多数人的名字都有一些空间。

非常感谢我对如何解决这个问题有一些指导或指导,谢谢!

4 个答案:

答案 0 :(得分:2)

可能你可以尝试这样的事情。

 [word for word in nastyString.replace("\n", "").replace(",", "").strip().split(' ') if word !='']

输出:

['nameOfString1', 'Inc_(stuff)', 'nameOfString2', 'Inc_(stuff)']

答案 1 :(得分:1)

nastyString = '  nameOfString1, Inc_(stuff)\n  nameOfString2, Inc_(stuff)\n  '
# replace '\n' with ','
nastyString = nastyString.replace('\n', ',')
# split at ',' and `strip()` all extra spaces
niceList = [v.strip() for v in nastyString.split(',') if v.strip()]

输出:

niceList
['nameOfString1', 'Inc_(stuff)', 'nameOfString2', 'Inc_(stuff)']

更新:OP共享新输入:

  

那太棒了,从来不知道条带功能。但是,我实际上正在尝试包含“Inc”部分,所以我希望输出:['nameOfString1,Inc_(stuff)','nameOfString2,Inc_(stuff)'等等,任何建议?

nastyString = '  nameOfString1, Inc_(stuff)\n  nameOfString2, Inc_(stuff)\n  '
niceList = [v.strip() for v in nastyString.split('\n') if v.strip()]

新产品:

niceList
['nameOfString1, Inc_(stuff)', 'nameOfString2, Inc_(stuff)']

答案 2 :(得分:1)

您可以使用正则表达式:

import re

nastyString = '  nameOfString1, Inc_(stuff)\n  nameOfString2, Inc_(stuff)\n  '

new_string = [i for i in re.split("[\n\s,]", nastyString) if i]

输出:

['nameOfString1', 'Inc_(stuff)', 'nameOfString2', 'Inc_(stuff)']

答案 3 :(得分:1)

如果您不想替换'\n',请执行以下操作:

import re
nastyString = '  nameOfString1, Inc_(stuff)\n  nameOfString2, Inc_(stuff)\n  '
word =re.findall(r'.',nastyString)
s=""
for i in word:
     s+=i
print s
  

输出:'nameOfString1,Inc_(stuff)nameOfString2,Inc_(stuff)'

现在您可以使用split()

print s.split(',')