Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何消除txt文件中的所有括号?_Python_List_Parentheses - Fatal编程技术网

Python 如何消除txt文件中的所有括号?

Python 如何消除txt文件中的所有括号?,python,list,parentheses,Python,List,Parentheses,我有一个txt文件,单列,取自excel,类型如下: 阿曼达(大声说话) 杰夫 史蒂文(开玩笑地) 阿曼达 布莱恩·格林博士 作为输出,我希望: 阿曼达 杰夫 史提芬 阿曼达 布莱恩·格林博士 我尝试在所有列上使用for循环,然后: if (str[i] == '('): return str.split('(') 但它显然不起作用。 你有什么可能的解决办法吗?然后,我需要一个输出文件作为我的原始txt文件,以便在单个列中包含每行的每

我有一个txt文件,单列,取自excel,类型如下:

阿曼达(大声说话) 杰夫 史蒂文(开玩笑地) 阿曼达 布莱恩·格林博士

作为输出,我希望:

阿曼达 杰夫 史提芬 阿曼达 布莱恩·格林博士

我尝试在所有列上使用for循环,然后:

            if (str[i] == '('):  
                return str.split('(')
但它显然不起作用。 你有什么可能的解决办法吗?然后,我需要一个输出文件作为我的原始txt文件,以便在单个列中包含每行的每个名称

谢谢大家!
(我正在使用PyCharm 3.2)

在这种情况下,我会使用正则表达式<代码>\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))

您可以使用与括号或完整单词中的所有内容相匹配的正则表达式将字符串拆分为列表,从列表中删除包含括号的所有元素,然后再次将列表连接到字符串。这样做的好处是在结果字符串中不会出现删除偏执词的双空格

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])

f=open(“mytext.txt”,“r”)file=f.readlines(),然后打印re.sub((\w*),“”,fi),因为我有数千行,复制和粘贴它需要一些时间。这可能适用于这种情况,但不适用于包含非单词字符的字符串,例如:(大声!),甚至是包含空格的字符串,例如(堆栈溢出)我正在检查!输出文件呢?因为我需要一个txt文件作为初始值,并用一个输出文件更新代码。如果您可以标记为解决方案,这会有很大帮助。是fi=“AMANDA…”必要吗?此外,我需要的输出文件必须与输入文件的格式相同,因此每个名称都位于不同的行中,形成一列。如果出现双空格(意外生成)或复合名称(如ROSS先生、DOC ROB GREEN),如果我使用“(”作为分隔符?如果括号中的字符串包含空格,则此解决方案不起作用,因为它依赖空格作为分隔符。如果这是一项要求,则使用正则表达式
re.findall(\(.*?\)|[^\s]+”,text)进行拆分。
是更好的选择。已更新答案,以便它可以处理括号中的空格。