簡體   English   中英

從每一行的文本文件中提取子字符串?

[英]Extract substrings from a text file on each line?

有沒有辦法從每個文本文件中提取子字符串,例如說這是文本文件,但有更多這樣的行:

president, Donald Trump, 74, USA

Priminster, Boris Johnson, 56, UK

我需要遍歷每一行並獲取用逗號分隔的子字符串。 所以 substring 將是Donald Trump, 74等等其他線路。

這里是 go:

with open('data.file') as f:
    for line in f:
        parts = line.split(', ')
        if len(parts) == 4:
            print(', '.join(parts[1:3]).strip())

Output:

Donald Trump, 74
Boris Johnson, 56

您可以使用 split 來在特定字符處拆分字符串。 您將獲得一個列表,您可以稍后加入。 讀取文件很容易。

with open('filename.txt', 'r') as rf:
    lines = rf.readlines()

對於這個特定的例子,你可以做

for line in lines:
    line = line.strip()
    row  = "{}, {}".format(line.split(',')[1], line.split(',')[2])
    print(row)

否則,請更清楚您想要實現的目標。

您可以使用 python 中字符串的簡單split()join()方法輕松完成 -

工作代碼 -

# You could open your file like this
#file1 = open('myfile.txt', 'r') 

# For now I am assuming your file contains the following line of data. 
# You could uncomment above line and use.

file1 = ['president, Donald Trump, 74, USA','president, Donald Trump, 74, USA']
for line in file1: 
    print("".join(line.split(',')[1:3]))

Output:

Donald Trump, 74
Donald Trump, 74

解釋

  • 基本上你只是用逗號分割字符串(文件中的每一行)並將字符串轉換為數組。 所以line.split(',')會給 -

     ['president', ' Donald Trump', ' 74', ' USA']
  • 現在,我們只是加入在上述步驟中獲得的列表的第二個和第三個元素。 這是由",".join()完成的,它將用','連接列表的每個元素。

  • 另外,請注意,我們使用了[1:3] ,它將 select 僅是列表中的第一個和第二個元素。 所以他們會給出上面顯示的結果

希望這可以幫助 !

打開文件,逐行讀取文件,然后使用帶有逗號分隔符的string.split方法獲取可以過濾的單詞列表。

with open('filename.txt', 'r') as my_file:
    line = my_file.readline()
    while line:
        word_list = line.split(',')
        print(f'{word_list[1]}, {word_list[2]}')
        line = my_file.readline()
    

嘗試這個:

lst = []
with open("textfile.txt", "r") as file:
  for line in file:
    stripped_line = line.strip()
    #to save it as a list
    lst.append(stripped_line.split(",")[1:-1])
print(lst)

#to print each of the element
for i in lst:
    print(",".join(i))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM