我有一个txt文件,单个COLUMN,取自excel,具有以下类型:
AMANDA(喋喋不休地说话) JEFF 史蒂文(巧合) AMANDA DOC BRIAN GREEN
作为输出我想要:
AMANDA JEFF 史蒂芬 AMANDA DOC BRIAN GREEN
我尝试在所有列上使用for循环,然后:
if (str[i] == '('):
return str.split('(')
但它显然无法正常工作。 你有什么可能的解决方案吗?然后我需要一个输出文件作为我的原始txt,因此每列中的每一行都有一个名称。
谢谢大家! (我正在使用PyCharm 3.2)
答案 0 :(得分:0)
在这种情况下我会使用正则表达式。 \w
将替换字母,*
将选择0或更多。然后我们检查它是否在括号之间。
import re
fi = "AMANDA (LOUDLY) JEFF STEVEN (TEASINGLY) AMANDA"
with open("mytext.txt","r") as fi, open("out.txt", "w") as fo:
for line in fi:
fo.write(re.sub("\(.*?\)", "", line))
答案 1 :(得分:0)
您可以使用匹配括号中的所有内容或完整单词的正则表达式将字符串拆分为列表,从列表中删除包含括号的所有元素,然后再将列表连接到字符串。优点是结果字符串中没有双重空格,其中删除了parantheses中的单词。
import re
text = "AMANDA (LOUDLY SPEAKING) JEFF STEVEN (TEASINGLY) AMANDA DOC BRIAN GREEN"
words = re.findall("\(.*?\)|[^\s]+",text)
print " ".join([x for x in words if "(" not in x])