我有一个特别长,讨厌的字符串,看起来像这样:
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,'但大多数人的名字都有一些空间。
非常感谢我对如何解决这个问题有一些指导或指导,谢谢!
答案 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(',')